[己解決]如何由選單1 控制選單2 內容?
3 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論 :: 已解決主題精華區
第1頁(共1頁)
[己解決]如何由選單1 控制選單2 內容?
各位先進,小弟有一程式百思不得其解,想請大家幫忙找 bug
目的是由 選單1(管嘴尺寸) , 控制選單2(銲管等級) 的內容
若有更好的方法,也請不吝告訴後進, tks /^O^/
------
test01.lsp
------
(defun c:test01()
(setq Noz_size_list '("1/2\"" "3/4\"" "1\""))
(setq ns_list '("0a" "0b" "1a" "01"))
(setq 0a_sch_list '("STD." "160" "XXS"));3/4
(setq 0b_sch_list '("STD." "160" "XXS"));1/2
(setq 01_sch_list '("STD." "160" "XXS"));1
(dcl_nzdt)
)
(defun dcl_nzdt()
(setq dcl_id (load_dialog "test01"))
(new_dialog "test01" dcl_id)
(show_list "Noz_size" Noz_size_list)
(action_tile "Noz_size" "(recomm_Noz_sch)")
(action_tile "accept" "(done_dialog 1)")
(setq dd (start_dialog))
)
(defun show_list(key newlist)
(start_list key 3)
(mapcar 'add_list newlist )
(end_list)
)
(defun recomm_Noz_sch()
(setq nos_size (atoi (get_tile "Noz_size")))
(setq ns (nth nos_size ns_list))
(setq pip_sch_list (strcat ns "_sch_list"))
(prompt (strcat "\nSch_list_name:" pip_sch_list))
(show_list "Pip_sch" pip_sch_list)
(setq comm_corr_0_sch '(0 0 0))
(setq no_comm_0 (nth nos_size comm_corr_0_sch))
(setq comm_0 (nth no_comm_0 pip_sch_list))
(prompt (strcat "\n0:" comm_0))
)
------
test01.dcl
------
test01:dialog{
:column{
:popup_list{label ="管嘴尺寸";key="Noz_size";}
:popup_list{label ="銲管等級";key="Pip_sch";}
:text{key ="Pip_sch_comd";}
}
ok_cancel_err;
}
目的是由 選單1(管嘴尺寸) , 控制選單2(銲管等級) 的內容
若有更好的方法,也請不吝告訴後進, tks /^O^/
------
test01.lsp
------
(defun c:test01()
(setq Noz_size_list '("1/2\"" "3/4\"" "1\""))
(setq ns_list '("0a" "0b" "1a" "01"))
(setq 0a_sch_list '("STD." "160" "XXS"));3/4
(setq 0b_sch_list '("STD." "160" "XXS"));1/2
(setq 01_sch_list '("STD." "160" "XXS"));1
(dcl_nzdt)
)
(defun dcl_nzdt()
(setq dcl_id (load_dialog "test01"))
(new_dialog "test01" dcl_id)
(show_list "Noz_size" Noz_size_list)
(action_tile "Noz_size" "(recomm_Noz_sch)")
(action_tile "accept" "(done_dialog 1)")
(setq dd (start_dialog))
)
(defun show_list(key newlist)
(start_list key 3)
(mapcar 'add_list newlist )
(end_list)
)
(defun recomm_Noz_sch()
(setq nos_size (atoi (get_tile "Noz_size")))
(setq ns (nth nos_size ns_list))
(setq pip_sch_list (strcat ns "_sch_list"))
(prompt (strcat "\nSch_list_name:" pip_sch_list))
(show_list "Pip_sch" pip_sch_list)
(setq comm_corr_0_sch '(0 0 0))
(setq no_comm_0 (nth nos_size comm_corr_0_sch))
(setq comm_0 (nth no_comm_0 pip_sch_list))
(prompt (strcat "\n0:" comm_0))
)
------
test01.dcl
------
test01:dialog{
:column{
:popup_list{label ="管嘴尺寸";key="Noz_size";}
:popup_list{label ="銲管等級";key="Pip_sch";}
:text{key ="Pip_sch_comd";}
}
ok_cancel_err;
}
ericwatch 在 2012-11-29, 09:43 作了第 1 次修改
ericwatch- 一般會員
- 文章總數 : 11
年齡 : 44
來自 : kaohsiung
職業 : 待業
愛好 : 烤肉
個性 : 沈默
使用年資 : 新手初學
使用版本 : 2005
經驗值 : 4459
威望值 : 6
注冊日期 : 2012-11-06
回復: [己解決]如何由選單1 控制選單2 內容?
選擇選單一時,取得它的值,在利用判斷式來顯示想要的列表並取得其值
明~- 高級會員
- 文章總數 : 307
年齡 : 44
來自 : 彰化
職業 : 機械
愛好 : 打球 騎車 健行 音樂 電影 (說不完...)
個性 : 不與人爭
使用年資 : 從學生時代接觸到現在(工作中不一定使用)
使用版本 : 2004和2008
積分 : 17
經驗值 : 7197
威望值 : 667
注冊日期 : 2009-12-24
回復: [己解決]如何由選單1 控制選單2 內容?
- 代碼:
(defun c:test01 ()
(setq Noz_size_list '("1/2\"" "3/4\"" "1\""))
(setq 0_sch_list '("0STD." "160" "XXS")) ;3/4 ;為達到顯示效果.串列刻意部分修改為不一樣.
(setq 1_sch_list '("1STD." "170" "XXS")) ;1/2 ;請自行修正為你要的值.
(setq 2_sch_list '("2STD." "180" "XXS")) ;1
(dcl_nzdt)
)
(defun dcl_nzdt ()
(setq dcl_id (load_dialog "test01"))
(new_dialog "test01" dcl_id)
(show_list "Noz_size" Noz_size_list)
(action_tile "Noz_size" "(recomm_Noz_sch $value)");管嘴尺寸 $value =選到選單的項次 起始為 "0")
(action_tile "Pip_sch" "(pip_sch_avt $value)") ;焊管等級
(action_tile "accept" "(done_dialog 1)")
(setq dd (start_dialog))
)
(defun show_list (key newlist)
(start_list key 3)
(mapcar 'add_list newlist)
(end_list)
)
(defun recomm_Noz_sch (index);管嘴尺寸
(setq pip_sch_list (strcat index "_sch_list")) ;組合成.要顯示的串列名稱.但值為字串.
(show_list "Pip_sch" (setq avt_list (eval (read pip_sch_list))))
; (eval (read val)) 會將val轉換為符號.並運算.也就是將真正的sch_list串列 設定給 avt_list(目前顯示的選單串列)
(set_tile "error" pip_sch_list) ;將目前顯示的選單串列.show在err_tile上.
(set_tile "Pip_sch_comd" "Sch_list_name:");切換管嘴尺寸時.清空內容
)
(defun pip_sch_avt (index)
(set_tile "Pip_sch_comd" (strcat "Sch_list_name:" (nth (atoi index) avt_list))) ;顯示avt_list項次.
)
Tiger&蘋果爸 寫到: 謝謝熱心程式回覆~< 積分 +1>
[公告]關於團隊成員的回文及貢獻
shenhung- 高級會員
- 文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8077
威望值 : 1188
注冊日期 : 2009-06-03
回復: [己解決]如何由選單1 控制選單2 內容?
謝謝 shenhung 大大
熱心給予詳盡的解說與指導 , 在下受益良多,
尤其是 (eval (read val)) 的用法正是程式瓶頸所在,
感謝不吝分享,衝破瓶頸 !
熱心給予詳盡的解說與指導 , 在下受益良多,
尤其是 (eval (read val)) 的用法正是程式瓶頸所在,
感謝不吝分享,衝破瓶頸 !
ericwatch- 一般會員
- 文章總數 : 11
年齡 : 44
來自 : kaohsiung
職業 : 待業
愛好 : 烤肉
個性 : 沈默
使用年資 : 新手初學
使用版本 : 2005
經驗值 : 4459
威望值 : 6
注冊日期 : 2012-11-06
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論 :: 已解決主題精華區
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章