[已解決]關於dcl的變數記憶問題
2 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論 :: 已解決主題精華區
第1頁(共1頁)
[已解決]關於dcl的變數記憶問題
請問各位高手
以下是我的dcl的程式,
檔名aaa.dcl
以下是配合的lisp程式,
aaa.lsp
我的問題是,當中的R1、FR1、COL1三個變數在執行一次且數字有更改時,當下次再執行此程式,三個有更改的數字如何顯示在DCL對話方塊中
例如:原始數字
R1=2
FR1=0.1
COL1=2
當我修改成
R1=4
FR1=0.5
COL1=3
如何把最後的這三組數字變成下次執行DCL的預設值,而不是2,0.1,2?是從dcl下手還是從lsp下手呢?
以下是我的dcl的程式,
檔名aaa.dcl
- 代碼:
aaa : dialog {
label = "測試dcl";
:column{
:edit_box {label = "逃角半徑";key = "keb11";edit_width=6;value=2;}
:edit_box {label = "逃示量";key = "keb12";edit_width=6;value=0.1;}
:edit_box {label = "倒R量";key = "keb13";edit_width=6;value=2;}
}
spacer_1;
ok_cancel;
}
以下是配合的lisp程式,
aaa.lsp
- 代碼:
;aaa.lsp
;測試dcl
(defun c:aaa()
(setq dcl_id (load_dialog "aaa"))
(new_dialog "aaa" dcl_id)
(mode_tile "keb11" 2)
(action_tile "keb11" "(setq R1 (atof $value))")
(action_tile "keb12" "(setq FR1 (atof $value))")
(action_tile "keb13" "(setq COL1 (atof $value))")
(action_tile "accept" "(done_dialog 1)") ;; 按 "確定"
(setq sd (start_dialog))
(princ (strcat "逃角半徑:" (rtos R1)))
(princ (strcat "逃示量:" (rtos FR1)))
(princ (strcat "倒R量:" (rtos COL1)))
(princ)
)
我的問題是,當中的R1、FR1、COL1三個變數在執行一次且數字有更改時,當下次再執行此程式,三個有更改的數字如何顯示在DCL對話方塊中
例如:原始數字
R1=2
FR1=0.1
COL1=2
當我修改成
R1=4
FR1=0.5
COL1=3
如何把最後的這三組數字變成下次執行DCL的預設值,而不是2,0.1,2?是從dcl下手還是從lsp下手呢?
djh1006 在 2014-10-10, 08:09 作了第 1 次修改
____________________________________________________________________________________
djh1006- 中級會員
- 文章總數 : 177
年齡 : 53
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 連續沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 23年以上
使用版本 : 2014
積分 : 7
經驗值 : 6136
威望值 : 359
注冊日期 : 2011-06-16
回復: [已解決]關於dcl的變數記憶問題
終於找到答案了
aaa.dcl
(if (/= R1_r nil) (set_tile "keb11" R1_r) (set_tile "keb11" "2"))
(if (/= COL1_r nil)(set_tile "keb12" COL1_r)(set_tile "keb12" "0.1"))
(if (/= FR1_r nil) (set_tile "keb13" FR1_r) (set_tile "keb13" "2"))
此值會反應到對話方塊裡
https://www.youtube.com/watch?v=3ytIKXN3rac&feature=youtu.be
aaa.dcl
- 代碼:
aaa : dialog {
label = "測試dcl";
:column{
:edit_box {label = "逃角半徑";key = "keb11";edit_width=6;}
:edit_box {label = "逃示量";key = "keb12";edit_width=6;}
:edit_box {label = "倒R量";key = "keb13";edit_width=6;}
}
spacer_1;
ok_cancel;
}
- 代碼:
;aaa.lsp
;測試dcl
(defun c:aaa()
(setq dcl_id (load_dialog "aaa"))
(new_dialog "aaa" dcl_id)
(if (/= R1_r nil) (set_tile "keb11" R1_r) (set_tile "keb11" "2"))
(if (/= COL1_r nil)(set_tile "keb12" COL1_r)(set_tile "keb12" "0.1"))
(if (/= FR1_r nil) (set_tile "keb13" FR1_r) (set_tile "keb13" "2"))
(action_tile "keb11" "(setq R1 (atof $value))")
(action_tile "keb12" "(setq COL1 (atof $value))")
(action_tile "keb13" "(setq FR1 (atof $value))")
(action_tile "accept" "(done_dialog 1)") ;; 按 "確定"
(setq sd (start_dialog))
(if (= R1 nil)(setq R1 2))
(if (= COL1 nil)(setq COL1 0.1))
(if (= FR1 nil)(setq FR1 2))
(setq
R1_r (rtos R1)
COL1_r (rtos COL1)
FR1_r (rtos FR1)
)
(princ (strcat "逃角半徑:" (rtos R1)))
(princ (strcat "逃示量:" (rtos FR1)))
(princ (strcat "倒R量:" (rtos COL1)))
(princ)
)
(if (/= R1_r nil) (set_tile "keb11" R1_r) (set_tile "keb11" "2"))
(if (/= COL1_r nil)(set_tile "keb12" COL1_r)(set_tile "keb12" "0.1"))
(if (/= FR1_r nil) (set_tile "keb13" FR1_r) (set_tile "keb13" "2"))
此值會反應到對話方塊裡
https://www.youtube.com/watch?v=3ytIKXN3rac&feature=youtu.be
____________________________________________________________________________________
djh1006- 中級會員
- 文章總數 : 177
年齡 : 53
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 連續沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 23年以上
使用版本 : 2014
積分 : 7
經驗值 : 6136
威望值 : 359
注冊日期 : 2011-06-16
回復: [已解決]關於dcl的變數記憶問題
很高興您的問題自行找到解答~
也謝謝你的解說喔!
也謝謝你的解說喔!
____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論 :: 已解決主題精華區
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章