[已解決]設定下拉式選單popup_list,執行時切換會跑掉
3 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論 :: 已解決主題精華區
第1頁(共1頁)
[已解決]設定下拉式選單popup_list,執行時切換會跑掉
節錄部分程式
(setq list1 '("S50" "S100" "S200" "S400" "S500" "S600" "S800" "S1000"))
(show_list "k1" list1)
(action_tile "k1" "(sub_pop1 $value)")
(setq dimstyle1 (get_tile "k1"))
(cond ((= dimstyle1 "0") (setq dimstyle1 "S50"))
((= dimstyle1 "1") (setq dimstyle1 "S100"))
((= dimstyle1 "2") (setq dimstyle1 "S200"))
((= dimstyle1 "3") (setq dimstyle1 "S400"))
((= dimstyle1 "4") (setq dimstyle1 "S500"))
((= dimstyle1 "5") (setq dimstyle1 "S600"))
((= dimstyle1 "6") (setq dimstyle1 "S800"))
((= dimstyle1 "7") (setq dimstyle1 "S1000"))
)
;;;副程式
(defun sub_pop1 ($v)
(set_tile "k1" (nth (atoi $v) list1))
)
;;;DCL
:popup_list{label="標註型式";edit_width=7;key="k1";value="2";}
每次在執行的時候,雖然我的預設值dimstyle1 是 s200
只要切換想要用s100或其他
就會跑到s50
但是只要我改 (setq list1 '("50" "100" "200" "400" "500" "600" "800" "1000"))
就可以
若是改 (setq list1 '("1-50" "1-100" "1-200" "1-400" "1-500" "1-600" "1-800" "1-1000"))
就又不行了 請問各位前輩是哪邊有問題嗎
謝謝
謝謝大大提供解答
感激萬分
(setq list1 '("S50" "S100" "S200" "S400" "S500" "S600" "S800" "S1000"))
(show_list "k1" list1)
(action_tile "k1" "(sub_pop1 $value)")
(setq dimstyle1 (get_tile "k1"))
(cond ((= dimstyle1 "0") (setq dimstyle1 "S50"))
((= dimstyle1 "1") (setq dimstyle1 "S100"))
((= dimstyle1 "2") (setq dimstyle1 "S200"))
((= dimstyle1 "3") (setq dimstyle1 "S400"))
((= dimstyle1 "4") (setq dimstyle1 "S500"))
((= dimstyle1 "5") (setq dimstyle1 "S600"))
((= dimstyle1 "6") (setq dimstyle1 "S800"))
((= dimstyle1 "7") (setq dimstyle1 "S1000"))
)
;;;副程式
(defun sub_pop1 ($v)
(set_tile "k1" (nth (atoi $v) list1))
)
;;;DCL
:popup_list{label="標註型式";edit_width=7;key="k1";value="2";}
每次在執行的時候,雖然我的預設值dimstyle1 是 s200
只要切換想要用s100或其他
就會跑到s50
但是只要我改 (setq list1 '("50" "100" "200" "400" "500" "600" "800" "1000"))
就可以
若是改 (setq list1 '("1-50" "1-100" "1-200" "1-400" "1-500" "1-600" "1-800" "1-1000"))
就又不行了 請問各位前輩是哪邊有問題嗎
謝謝
謝謝大大提供解答
感激萬分
swcforest 在 2010-04-16, 20:56 作了第 1 次修改
swcforest- 初級會員
- 文章總數 : 113
年齡 : 45
來自 : 台中市南區
職業 : 土木工程設計
愛好 : 遊山玩水及AutoLISP
個性 : 開朗活潑
使用年資 : 六七年了
使用版本 : AutoCAD 2016
積分 : 1
經驗值 : 6244
威望值 : 10
注冊日期 : 2008-07-27
回復: [已解決]設定下拉式選單popup_list,執行時切換會跑掉
dimstyle1 已經是key "k1"的index 必須為一個整數字串值..但.後面又是list1所取出的值..2者是不一樣的東西.不能設為同一個變數名.否則dimstyle1值會變取帶掉.一定會錯誤..所以.你list1取出的值.要令外取名.改為dimstyle2 我沒你完整程式不能幫你測..你試試看...祝你好運
(cond ((= dimstyle1 "0") (setq dimstyle2 "S50"))
((= dimstyle1 "1") (setq dimstyle2 "S100"))
((= dimstyle1 "2") (setq dimstyle2 "S200"))
((= dimstyle1 "3") (setq dimstyle2 "S400"))
((= dimstyle1 "4") (setq dimstyle2 "S500"))
((= dimstyle1 "5") (setq dimstyle2 "S600"))
((= dimstyle1 "6") (setq dimstyle2 "S800"))
((= dimstyle1 "7") (setq dimstyle2 "S1000"))
)
(cond ((= dimstyle1 "0") (setq dimstyle2 "S50"))
((= dimstyle1 "1") (setq dimstyle2 "S100"))
((= dimstyle1 "2") (setq dimstyle2 "S200"))
((= dimstyle1 "3") (setq dimstyle2 "S400"))
((= dimstyle1 "4") (setq dimstyle2 "S500"))
((= dimstyle1 "5") (setq dimstyle2 "S600"))
((= dimstyle1 "6") (setq dimstyle2 "S800"))
((= dimstyle1 "7") (setq dimstyle2 "S1000"))
)
shenhung- 高級會員
- 文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8075
威望值 : 1188
注冊日期 : 2009-06-03
回復: [已解決]設定下拉式選單popup_list,執行時切換會跑掉
建議你下拉功能表預設值或下拉清單最好寫在DCL檔中,如下例
你現在的寫法應該是參考書上寫的方式,但是這樣的寫法你就必須將資料處理好不然會出現不正常的,下列是LSP中的寫法與上述DCL
程式對應
- 代碼:
: popup_list {
label = "字型設定:";
key = "sty";
edit_width = 15;
list = "STANDARD\nSTANDARD1\n點陣字";
value = 0;
}
: popup_list {
label = " 字高設定:";
key = "sth";
edit_width = 3;
list = "3\n3.5\n4\n4.5\n5\n6\n7\n8";
value = 5;
}
你現在的寫法應該是參考書上寫的方式,但是這樣的寫法你就必須將資料處理好不然會出現不正常的,下列是LSP中的寫法與上述DCL
程式對應
- 代碼:
(defun ok ()
(setq sty (get_tile "sty"))
(setq sth (get_tile "sth"))
(done_dialog 1)
)
(cond ((= sty "0") (setvar "textstyle" "STANDARD"))
((= sty "1") (setvar "textstyle" "STANDARD1"))
((= sty "2") (setvar "textstyle" "點陣字"))
)
(cond ((= sth "0") (setq sth (* 3.0 (getvar "userr1")) hl 6.0))
((= sth "1") (setq sth (* 3.5 (getvar "userr1")) hl 6.5))
((= sth "2") (setq sth (* 4.0 (getvar "userr1")) hl 7.0))
((= sth "3") (setq sth (* 4.5 (getvar "userr1")) hl 7.5))
((= sth "4") (setq sth (* 5.0 (getvar "userr1")) hl 8.0))
((= sth "5") (setq sth (* 6.0 (getvar "userr1")) hl 9.0))
((= sth "6") (setq sth (* 7.0 (getvar "userr1")) hl 10.0))
((= sth "7") (setq sth (* 8.0 (getvar "userr1")) hl 11.0))
)
張譽璋- 榮譽顧問
- 文章總數 : 304
年齡 : 54
來自 : 彰化縣員林鎮
職業 : 機械設計工程師/AutoCAD講師/AutoCAD外掛系統開發/AutoCAD書籍作者
愛好 : 旅行及電影
個性 : 風趣健談
使用年資 : 25年
使用版本 : AutoCAD2010/2011/2012/2013
積分 : 20
經驗值 : 7521
威望值 : 641
發帖精華 : 2
回帖精華 : 1
注冊日期 : 2008-05-28
回復: [已解決]設定下拉式選單popup_list,執行時切換會跑掉
你可以將你的原來寫法改為如下
- 代碼:
(setq list1 '("50" "100" "200" "400" "500" "600" "800" "1000"))
(show_list "k1" list1)
(action_tile "k1" "(sub_pop1 $value)")
(setq dimstyle1 (get_tile "k1"))
(cond ((= dimstyle1 "0") (setq dimstyle1 (strcat "50"))
((= dimstyle1 "1") (setq dimstyle1 "100"))
((= dimstyle1 "2") (setq dimstyle1 "200"))
((= dimstyle1 "3") (setq dimstyle1 "400"))
((= dimstyle1 "4") (setq dimstyle1 "500"))
((= dimstyle1 "5") (setq dimstyle1 "600"))
((= dimstyle1 "6") (setq dimstyle1 "800"))
((= dimstyle1 "7") (setq dimstyle1 "1000"))
)
(setq dimstyle1 (strcat "S" dimstyle1));加入這行,利用合併字串的方式解決
張譽璋- 榮譽顧問
- 文章總數 : 304
年齡 : 54
來自 : 彰化縣員林鎮
職業 : 機械設計工程師/AutoCAD講師/AutoCAD外掛系統開發/AutoCAD書籍作者
愛好 : 旅行及電影
個性 : 風趣健談
使用年資 : 25年
使用版本 : AutoCAD2010/2011/2012/2013
積分 : 20
經驗值 : 7521
威望值 : 641
發帖精華 : 2
回帖精華 : 1
注冊日期 : 2008-05-28
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論 :: 已解決主題精華區
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章