AutoCAD顧問
還沒有註冊嗎...即日起免費註冊,所有最完整的AutoCAD討論、教學及資源都在論壇裡喔~

[已解決]下拉式選單的預設值寫法---AutoLISP

上一篇主題 下一篇主題 向下

[已解決]下拉式選單的預設值寫法---AutoLISP

發表 由 swcforest 于 周二 10 11月 2009 - 7:06

(setq list0 '("S50" "S100" "S200" "S400" "S500" "S600" "S800" "S1000"))

(show_list "pop0" list0)

(set_tile "list0" (nth 1 list0))

各位大大好 我又來發問了
我想請問 在上列式子中 我在下拉式選單中 設定了s50~s1000
今天我在程式執行中 我想要有個預設值 也就是s100
那請問 我這樣寫對嗎
請各位大大指教


swcforest 在 周四 12 11月 2009 - 10:35 作了第 1 次修改

swcforest
初級會員
初級會員

文章總數 : 104
年齡 : 37
來自 : 台中市南區
職業 : 土木工程設計
愛好 : 遊山玩水及AutoLISP
個性 : 開朗活潑
使用年資 : 六七年了
使用版本 : AutoCAD 2016
積分 : 1
經驗值 : 3537
威望值 : 13
注冊日期 : 2008-07-27
男 天秤座 羊

回頂端 向下

回復: [已解決]下拉式選單的預設值寫法---AutoLISP

發表 由 張譽璋 于 周二 10 11月 2009 - 9:10

你將這行(set_tile ”list0” (nth 1 list0))
改為下列試試看
(set_tile ”list0” ”1”)或是直接從對話框程式給value=1;。
下拉式清單中是使用項次編號,編號起始值是0。

張譽璋
榮譽顧問
榮譽顧問

文章總數 : 303
年齡 : 46
來自 : 彰化縣員林鎮
職業 : 機械設計工程師/AutoCAD講師/AutoCAD外掛系統開發/AutoCAD書籍作者
愛好 : 旅行及電影
個性 : 風趣健談
使用年資 : 25年
使用版本 : AutoCAD2010/2011/2012/2013
積分 : 20
經驗值 : 4854
威望值 : 624
發帖精華 : 2
回帖精華 : 1
注冊日期 : 2008-05-28
藍鵲12號
男 處女座 狗

回頂端 向下

回復: [已解決]下拉式選單的預設值寫法---AutoLISP

發表 由 swcforest 于 周三 11 11月 2009 - 7:14

報告老師
我兩個方法都試過了
兩種皆不可行
所以我想 是否因為他是下拉式選單
所以無法給預設值哩
我看吳永進老師書上的範例
他是再下拉式選單前 再多一個編輯框 edit_box
才有辦法設定預設值是下拉式的第幾個

swcforest
初級會員
初級會員

文章總數 : 104
年齡 : 37
來自 : 台中市南區
職業 : 土木工程設計
愛好 : 遊山玩水及AutoLISP
個性 : 開朗活潑
使用年資 : 六七年了
使用版本 : AutoCAD 2016
積分 : 1
經驗值 : 3537
威望值 : 13
注冊日期 : 2008-07-27
男 天秤座 羊

回頂端 向下

回復: [已解決]下拉式選單的預設值寫法---AutoLISP

發表 由 張譽璋 于 周三 11 11月 2009 - 8:41

我想你先檢查一下你控制下拉式選單的副程式,看看是否有問題,我幾乎很少使用下拉式清單,所以我請教我同事,他是這樣寫的,至於為何我很少用下拉式清單,主要原因是它不方便操作,由其是項次多時應儘量避免使用,不過下拉清單也是有一個優點就是較省對話框版面,我再嘗試幫你找看看解決方法。

張譽璋
榮譽顧問
榮譽顧問

文章總數 : 303
年齡 : 46
來自 : 彰化縣員林鎮
職業 : 機械設計工程師/AutoCAD講師/AutoCAD外掛系統開發/AutoCAD書籍作者
愛好 : 旅行及電影
個性 : 風趣健談
使用年資 : 25年
使用版本 : AutoCAD2010/2011/2012/2013
積分 : 20
經驗值 : 4854
威望值 : 624
發帖精華 : 2
回帖精華 : 1
注冊日期 : 2008-05-28
藍鵲12號
男 處女座 狗

回頂端 向下

回復: [已解決]下拉式選單的預設值寫法---AutoLISP

發表 由 張譽璋 于 周三 11 11月 2009 - 9:15

找到方法了,你將對話框程式的選單部分改寫成如下:
加入以下這兩行參數
list = "S50\nS100\nS200\nS400\nS500\nS600\nS800\nS1000";
value = 1;
如此設訂打開對話框時就可預設制S100的項次了。
但是你的程式就必須改寫
(setq list0 (get_tile "list0"))
改寫成這樣時取回"的資料會是"1"
再用多條件是選項的方式去執行該項次的對應的表示式
例如 (cond ((= list0 "0") (setq ........))
((= list0 "1") (setq.........))
(t (setq........))
);cond

張譽璋
榮譽顧問
榮譽顧問

文章總數 : 303
年齡 : 46
來自 : 彰化縣員林鎮
職業 : 機械設計工程師/AutoCAD講師/AutoCAD外掛系統開發/AutoCAD書籍作者
愛好 : 旅行及電影
個性 : 風趣健談
使用年資 : 25年
使用版本 : AutoCAD2010/2011/2012/2013
積分 : 20
經驗值 : 4854
威望值 : 624
發帖精華 : 2
回帖精華 : 1
注冊日期 : 2008-05-28
藍鵲12號
男 處女座 狗

回頂端 向下

回復: [已解決]下拉式選單的預設值寫法---AutoLISP

發表 由 swcforest 于 周三 11 11月 2009 - 11:33

請問老師 你的意思是說 當我程式寫
dcl程式
:popup_list{label="文字型式";edit_width=7;key="k0";value="1";}
(set_tile "k0" (nth (atoi $v) list0)) 所得出來的
lisp程式
(setq list0 '("S50" "S100" "S200" "S400" "S500" "S600" "S800" "S1000"))
"k0" 會是0~7

:popup_list{label="文字型式";edit_width=7;key="k0";}
(set_tile "k0" (nth (atoi $v) list0)) 所得出來的
lisp程式
(setq list0 '("S50" "S100" "S200" "S400" "S500" "S600" "S800" "S1000"))
"k0" 會是s50~s1000
是這樣的意思嗎

swcforest
初級會員
初級會員

文章總數 : 104
年齡 : 37
來自 : 台中市南區
職業 : 土木工程設計
愛好 : 遊山玩水及AutoLISP
個性 : 開朗活潑
使用年資 : 六七年了
使用版本 : AutoCAD 2016
積分 : 1
經驗值 : 3537
威望值 : 13
注冊日期 : 2008-07-27
男 天秤座 羊

回頂端 向下

回復: [已解決]下拉式選單的預設值寫法---AutoLISP

發表 由 張譽璋 于 周三 11 11月 2009 - 12:06

應該這樣寫才對
代碼:
:popup_list{label="文字型式";edit_width=7;key="k0";list = "S50\nS100\nS200\nS400\nS500\nS600\nS800\nS1000";value="1";}
lisp程式要這樣寫
(setq k0 (get_tile "k0"))此行須放置於按下確定鍵的副程式中
以下這段程式置於按下確定後所執行的程式範圍中
代碼:
(cond ((= k0 "0") (setq list0 "S50"))
        ((= k0 "1") (setq list0 "S100"))
        ((= k0 "2") (setq list0 "S200"))
        ((= k0 "3") (setq list0 "S400"))
        ((= k0 "4") (setq list0 "S500"))
        ((= k0 "5") (setq list0 "S600"))
        ((= k0 "6") (setq list0 "S800"))
        ((= k0 "7") (setq list0 "S1000"))
)
要寫成上述的程式碼才行


張譽璋 在 周四 12 11月 2009 - 2:22 作了第 1 次修改

張譽璋
榮譽顧問
榮譽顧問

文章總數 : 303
年齡 : 46
來自 : 彰化縣員林鎮
職業 : 機械設計工程師/AutoCAD講師/AutoCAD外掛系統開發/AutoCAD書籍作者
愛好 : 旅行及電影
個性 : 風趣健談
使用年資 : 25年
使用版本 : AutoCAD2010/2011/2012/2013
積分 : 20
經驗值 : 4854
威望值 : 624
發帖精華 : 2
回帖精華 : 1
注冊日期 : 2008-05-28
藍鵲12號
男 處女座 狗

回頂端 向下

回復: [已解決]下拉式選單的預設值寫法---AutoLISP

發表 由 swcforest 于 周三 11 11月 2009 - 12:58

可是我看吳永進老師書上的範例 不用這麼做耶
只是我模擬她的作法 卻做不出來
不知道是哪邊有出了問題

swcforest
初級會員
初級會員

文章總數 : 104
年齡 : 37
來自 : 台中市南區
職業 : 土木工程設計
愛好 : 遊山玩水及AutoLISP
個性 : 開朗活潑
使用年資 : 六七年了
使用版本 : AutoCAD 2016
積分 : 1
經驗值 : 3537
威望值 : 13
注冊日期 : 2008-07-27
男 天秤座 羊

回頂端 向下

回復: [已解決]下拉式選單的預設值寫法---AutoLISP

發表 由 張譽璋 于 周三 11 11月 2009 - 14:47

這個問題我就不方便回答你了,因為我沒有看過吳永進老師的範例,所以我無從得知程式出了什麼問題,其實對話框的預設方式是有兩種方法,我提供給你的解決方式是直接在對話框程式中設定清單內容以及預設值,這種方式比較容易,另一種方式就是在lisp程式中設定並將設定值丟回對話框中去設定,使用的時機和狀況兩者不盡相同,但是從程式中去設定對話框會比較複雜,會增加程式的編寫困難度,問題大都會出現資料的轉換上,所以你的狀況不是很複雜所以建議你直接從對話框中設定會比較合適也比較單純,對話框中的選項主要是提供你,操作者選了那個項目,對話框就將選的項目丟回來給程式告訴程式該執行那個動作,
所以項次號碼就是一個訊號一樣,一般我設計的習慣是編輯框的預設值我才會由程式去控制他,清單的話還是以對話框中預設比較理想,我在網站中有提供一支型鋼的程式,那支程式中的選台鈕就屬於比較複雜的操作設計所以一定要由程式去設定預設值. 三條線2

張譽璋
榮譽顧問
榮譽顧問

文章總數 : 303
年齡 : 46
來自 : 彰化縣員林鎮
職業 : 機械設計工程師/AutoCAD講師/AutoCAD外掛系統開發/AutoCAD書籍作者
愛好 : 旅行及電影
個性 : 風趣健談
使用年資 : 25年
使用版本 : AutoCAD2010/2011/2012/2013
積分 : 20
經驗值 : 4854
威望值 : 624
發帖精華 : 2
回帖精華 : 1
注冊日期 : 2008-05-28
藍鵲12號
男 處女座 狗

回頂端 向下

回復: [已解決]下拉式選單的預設值寫法---AutoLISP

發表 由 swcforest 于 周四 12 11月 2009 - 10:36

謝謝張老師指導
感激不盡

swcforest
初級會員
初級會員

文章總數 : 104
年齡 : 37
來自 : 台中市南區
職業 : 土木工程設計
愛好 : 遊山玩水及AutoLISP
個性 : 開朗活潑
使用年資 : 六七年了
使用版本 : AutoCAD 2016
積分 : 1
經驗值 : 3537
威望值 : 13
注冊日期 : 2008-07-27
男 天秤座 羊

回頂端 向下

上一篇主題 下一篇主題 回頂端


 
這個論壇的權限:
無法 在這個版面回復文章