如何实现对话框的嵌套[求助]
<p> (defun initimg( img_key slide / x1 y1) // 定义初始化函数,有两个全局变量img_key和slide <br/> (setq x1 (dimx_tile img_key)) //获取图像按钮的长度<br/> (setq y1 (dimy_tile img_key)) //获取图像按钮的宽度<br/> (start_image img_key)//开始图像控件的生成<br/> <br/> (slide_image -3 -30 x1 y1 slide) //在激活对话框图像控件上显示一个幻灯片<br/> (end_image) //结束图像处理函数</p><p> )</p><p>(defun img (/ id )<br/> (setq id (load_dialog "e:\\lisp\\zijide")) //装载对话框文件<br/> (if (< id 0) (exit)) //如文件不存在,退出<br/> (if (not (new_dialog "jingujian" id)) (exit)) //对话框文件中名称不存在,退出<br/> (initimg "screw_0" "e:\\lisp\\GBT799-1988") //调用初始化函数 screw_0为图像按钮key,e:\\autolisp study\\circ为幻灯片<br/> (initimg "screw_1" "e:\\lisp\\GBT6181-1986")<br/> (initimg "screw_2" "e:\\lisp\\GBT9458-1988")<br/> (initimg "screw_3" "e:\\lisp\\GBT9458-1989")<br/> (initimg "screw_4" "e:\\lisp\\JBZQ4321-1986")<br/> (initimg "screw_5" "e:\\lisp\\GBT9459-1988")<br/> (setq what_value 4)<br/> <br/> (action_tile "screw_0" "(mn01 id)") //按GBT799-1988图像按钮,显示其子对话框,id为传递 参数,必须 保证在new_dialog后<br/> (action_tile "screw_1" "(mn02 id)")<br/> (action_tile "screw_2" "(mn03 id)")<br/> (action_tile "screw_3" "(mn04 id)")<br/> (action_tile "screw_4" "(mn05 id)")<br/> (action_tile "screw_5" "(mn06 id)")<br/> (action_tile "accept" "(done_dialog 1)")//设置变量<br/> (action_tile "cancel" "(done_dialog 0)")<br/> <br/> (setq what_value (start_dialog))//激活对话框<br/> <br/> <br/> (princ)<br/> <br/> (unload_dialog id) //卸载对话框<br/> (princ)<br/> )<br/>(defun mn01 ( id) //显示子circ子对话框 draw_circ是qiantao_main对话框文件中子对话框的名称</p><p> (if (not (new_dialog "draw_dijiao01" id)) (exit))<br/> (setq d 0 l 0 )//设置编辑框初值变量<br/> (set_tile "s_d" (rtos X 2 2))//设置初值 set_tile是设置关键字key控件的值,rtos将数转换为string 2表示十进制 2表示小数点后两位<br/> (set_tile "s_l" (rtos Y 2 2))<br/> <br/> (action_tile "accept" "(getdata1)(done_dialog 2)")<br/> (action_tile "cancel" "(done_dialog 3)")<br/> (setq what_next (start_dialog))<br/> <br/> <br/> <br/> )<br/>(defun mn02 ( id) //显示子circ子对话框 draw_circ是qiantao_main对话框文件中子对话框的名称</p><p> (if (not (new_dialog "draw_GBT6181_1986" id)) (exit))<br/> (setq m 0 )//设置编辑框初值变量<br/> (set_tile "s_d" (rtos X 2 2))//设置初值 set_tile是设置关键字key控件的值,rtos将数转换为string 2表示十进制 2表示小数点后两位<br/> (action_tile "accept" "(getdata1)(done_dialog 4)")<br/> (action_tile "cancel" "(done_dialog 5)")<br/> (setq what_next (start_dialog))<br/> <br/> <br/> <br/> )<br/>(defun mn03 ( id) //显示子circ子对话框 draw_circ是qiantao_main对话框文件中子对话框的名称</p><p> (if (not (new_dialog "draw_GBT9458-1988" id)) (exit))<br/> (setq m 0 )//设置编辑框初值变量<br/> (set_tile "s_d" (rtos X 2 2))//设置初值 set_tile是设置关键字key控件的值,rtos将数转换为string 2表示十进制 2表示小数点后两位<br/> (action_tile "accept" "(getdata1)(done_dialog 6)")<br/> (action_tile "cancel" "(done_dialog 7)")<br/> (setq what_next (start_dialog))<br/> <br/> <br/> <br/> )<br/>(defun mn04 ( id) //显示子circ子对话框 draw_circ是qiantao_main对话框文件中子对话框的名称</p><p> (if (not (new_dialog "draw_dijiao02" id)) (exit))<br/> (setq m 0 )//设置编辑框初值变量<br/> (set_tile "s_d" (rtos X 2 2))//设置初值 set_tile是设置关键字key控件的值,rtos将数转换为string 2表示十进制 2表示小数点后两位<br/> (action_tile "accept" "(getdata1)(done_dialog 8)")<br/> (action_tile "cancel" "(done_dialog 9)")<br/> (setq what_next (start_dialog))<br/> <br/> <br/> <br/> )<br/>(defun mn05 ( id) //显示子circ子对话框 draw_circ是qiantao_main对话框文件中子对话框的名称</p><p> (if (not (new_dialog "draw_GBT9459-1988" id)) (exit))<br/> (setq m 0 )//设置编辑框初值变量<br/> (set_tile "s_d" (rtos X 2 2))//设置初值 set_tile是设置关键字key控件的值,rtos将数转换为string 2表示十进制 2表示小数点后两位<br/> (action_tile "accept" "(getdata1)(done_dialog 10)")<br/> (action_tile "cancel" "(done_dialog 11)")<br/> (setq what_next (start_dialog))<br/> <br/> <br/> <br/> )<br/>(defun mn06 ( id) //显示子circ子对话框 draw_circ是qiantao_main对话框文件中子对话框的名称</p><p> (if (not (new_dialog "draw_JBZQ4321-1986" id)) (exit))<br/> (setq m 0 )//设置编辑框初值变量<br/> (set_tile "s_d" (rtos X 2 2))//设置初值 set_tile是设置关键字key控件的值,rtos将数转换为string 2表示十进制 2表示小数点后两位<br/> (action_tile "accept" "(getdata1)(done_dialog 12)")<br/> (action_tile "cancel" "(done_dialog 13)")<br/> (setq what_next (start_dialog))<br/> <br/> <br/> <br/> )<br/> </p><p></p><p>jingujian:dialog{<br/> label="紧固件类型的选择";<br/> :row{<br/> :boxed_column{<br/> label="选择类型";<br/> :row{<br/> :image_button{//图像按钮0<br/> <br/> color=-2;width=30;aspect_ratio=1;key="screw_0";<br/> }<br/> :image_button{//图像按钮1<br/> color=-2;width=30;aspect_ratio=1;key="screw_1";<br/> }<br/> :image_button{//图像按钮2<br/> color=-2;width=30;aspect_ratio=1;key="screw_2";<br/> }<br/> }<br/> :row{<br/> :image_button{//图像按钮3<br/> color=-2;width=30;aspect_ratio=1;key="screw_3";<br/> }<br/> :image_button{//图像按钮4<br/> color=-2;width=30;aspect_ratio=1;key="screw_4";<br/> }<br/> <br/> :image_button{//图像按钮5<br/> color=-2;width=30;aspect_ratio=1;key="screw_5";<br/> }<br/> }<br/> }<br/> <br/> }<br/> :row{//继续和退出按钮<br/> spacer_1;<br/> :button{<br/> label="继续";key="accept";is_default=true;fixed_width=true;<br/> }<br/> :button{<br/> label="退出";key="cancel";fixed_width=true;<br/> }<br/> spacer_1;<br/> <br/> }<br/>}</p><p> draw_U:dialog{//子对话框<br/> label="确定U型螺栓参数";<br/> :row{//第一行:1个图像和两个列表<br/> :image{color=-2;width=30;aspect_ratio=0.8;key="id_img";}//图像<br/> :list_box{label="管子外径&D0";key="s_d";edit_width=5;height=8;<br/> list="14\n18\n22\n25\n33\n38\n42\n45\n48\n51\n57\n60\n76\n83\n89\n102\n108\n114\n133\n140\n159\n165\n219\n";<br/> fixed_width=true;}//大径列表<br/> }//第一行结束<br/> :row{//第二行,有两列<br/> :column{<br/> :boxed_column{label="定位点";<br/> :edit_box{label="定位点&x坐标";key="p_x";edit_box=10;value="150";}<br/> :edit_box{label="定位点&y坐标";key="p_y";edit_box=10;value="100";}<br/> :button{label="光标拾取<";key="p_p";}<br/> }<br/> <br/> ok_cancel;<br/> }<br/> <br/> } <br/> <br/> }<br/>draw_dijiao01:dialog{//子对话框<br/> label="确定地脚螺栓的参数";<br/> :row{//第一行:1个图像和两个列表<br/> :image{color=-2;width=22;aspect_ratio=0.5;key="id_img";}//图像<br/> :list_box{label="&d";key="s_d";edit_width=5;height=8;<br/> list="M6\nM8\nM10\nM3\nM12\nM16\nM20\nM24\nM30\nM36\nM42\nM48\n";<br/> fixed_width=true;}//大径列表<br/> :list_box{label="公称长度&l";key="s_l";edit_width=5;height=8;<br/> list="400\n500\n630\n800\n1000\n1250\n1500\n";<br/> fixed_width=true;}//长度列表<br/> }//第一行结束<br/> :row{//第二行,有两列<br/> :column{<br/> :boxed_column{label="定位点";<br/> :edit_box{label="定位点&x坐标";key="p_x";edit_box=8;value="150";}<br/> :edit_box{label="定位点&y坐标";key="p_y";edit_box=8;value="100";}<br/> :button{label="光标拾取<";key="p_p";}<br/> }<br/> <br/> ok_cancel;<br/> }<br/> <br/> } <br/> <br/> }<br/> <br/> draw_GBT9458_1988:dialog{//子对话框<br/> label="确定螺母的参数";<br/> :row{//第一行:1个图像和两个列表<br/> :image{color=-2;width=22;aspect_ratio=0.5;key="id_img";}//图像<br/> :list_box{label="螺纹规格&m";key="s_d";edit_width=5;height=8;<br/> list="M5\nM6\nM8\nM10\nM12\nM14\nM16\nM18\nM20\nM22\nM24\nM27\nM30\nM33\nM36\n";<br/> fixed_width=true;}//大径列表<br/> }//第一行结束<br/> :row{//第二行,有两列<br/> :column{<br/> :boxed_column{label="定位点";<br/> :edit_box{label="定位点&x坐标";key="p_x";edit_box=8;value="150";}<br/> :edit_box{label="定位点&y坐标";key="p_y";edit_box=8;value="100";}<br/> :button{label="光标拾取<";key="p_p";}<br/> }<br/> <br/> ok_cancel;<br/> }<br/> <br/> }<br/> }<br/> draw_GBT6181_1986:dialog{//子对话框<br/> label="确定螺母的参数";<br/> :row{//第一行:1个图像和两个列表<br/> :image{color=-2;width=22;aspect_ratio=0.5;key="id_img";}//图像<br/> :list_box{label="螺纹规格&d";key="s_d";edit_width=5;height=8;<br/> list="M5\nM6\nM8\nM10\nM12\nM14\nM16\nM18\nM20\nM22\nM24\nM27\nM30\nM33\nM36\n";<br/> fixed_width=true;}//大径列表<br/> <br/> }//第一行结束<br/> :row{//第二行,有两列<br/> :column{<br/> :boxed_column{label="定位点";<br/> :edit_box{label="定位点&x坐标";key="p_x";edit_box=8;value="150";}<br/> :edit_box{label="定位点&y坐标";key="p_y";edit_box=8;value="100";}<br/> :button{label="光标拾取<";key="p_p";}<br/> }<br/> <br/> ok_cancel;<br/> }<br/> <br/> } <br/> <br/> }<br/> draw_GBT9459_1988:dialog{//子对话框<br/> label="确定螺母的参数";<br/> :row{//第一行:1个图像和两个列表<br/> :image{color=-2;width=22;aspect_ratio=0.5;key="id_img";}//图像<br/> :list_box{label="螺钉大径&d";key="s_d";edit_width=5;height=8;<br/> list="M5\nM6\nM8\nM10\nM12\nM14\nM16\nM18\nM20\nM22\nM24\nM27\nM30\nM33\nM36\n";<br/> fixed_width=true;}//大径列表<br/> <br/> }//第一行结束<br/> :row{//第二行,有两列<br/> :column{<br/> :boxed_column{label="定位点";<br/> :edit_box{label="定位点&x坐标";key="p_x";edit_box=8;value="150";}<br/> :edit_box{label="定位点&y坐标";key="p_y";edit_box=8;value="100";}<br/> :button{label="光标拾取<";key="p_p";}<br/> }<br/> <br/> ok_cancel;<br/> }<br/> <br/> } <br/> <br/> }<br/> draw_dijiao02:dialog{//子对话框<br/> label="确定地脚螺栓的参数";<br/> :row{//第一行:1个图像和两个列表<br/> :image{color=-2;width=22;aspect_ratio=0.5;key="id_img";}//图像<br/> :list_box{label="螺钉大径&d";key="s_d";edit_width=5;height=8;<br/> list="M1.6\nM2\nM2.5\nM3\nM4\nM5\nM6\nM8\nM10\nM12\nM14\nM16\nM20";<br/> fixed_width=true;}//大径列表<br/> :list_box{label="螺钉长度&l";key="s_l";edit_width=5;height=8;<br/> list="2\n2.5\n3\n4\n5\n6\n8\n10\n12\n(14)\n16\n20\n25\n30\n35\n40\n45\n50\n";<br/> fixed_width=true;}//长度列表<br/> }//第一行结束<br/> :row{//第二行,有两列<br/> :column{<br/> :boxed_column{label="定位点";<br/> :edit_box{label="定位点&x坐标";key="p_x";edit_box=8;value="150";}<br/> :edit_box{label="定位点&y坐标";key="p_y";edit_box=8;value="100";}<br/> :button{label="光标拾取<";key="p_p";}<br/> }<br/> <br/> ok_cancel;<br/> }<br/> <br/> } <br/> <br/> }</p><p></p><p>谢谢了</p>(defun initimg(img_key slide / x1 y1);定义初始化函数,有两个全局变量img_key和slide
(setq x1 (dimx_tile img_key)) ;获取图像按钮的长度
(setq y1 (dimy_tile img_key)) ;获取图像按钮的宽度
(start_image img_key) ;开始图像控件的生成
(slide_image -3 -30 x1 y1 slide) ;在激活对话框图像控件上显示一个幻灯片
(end_image) ;结束图像处理函数
)
(defun img ()
(if (< (setq id (load_dialog "e:\\lisp\\zijide")) 0) (exit))
(if (not (new_dialog "jingujian" id)) (exit))
(initimg "screw_0" "e:\\lisp\\GBT799-1988")
(initimg "screw_1" "e:\\lisp\\GBT6181-1986")
(initimg "screw_2" "e:\\lisp\\GBT9458-1988")
(initimg "screw_3" "e:\\lisp\\GBT9458-1989")
(initimg "screw_4" "e:\\lisp\\JBZQ4321-1986")
(initimg "screw_5" "e:\\lisp\\GBT9459-1988")
(setq what_value 4)
(action_tile "screw_0" "(mn01)") ;按GBT799-1988图像按钮,显示其子对话框
(action_tile "screw_1" "(mn02)")
(action_tile "screw_2" "(mn03)")
(action_tile "screw_3" "(mn04)")
(action_tile "screw_4" "(mn05)")
(action_tile "screw_5" "(mn06)")
(action_tile "accept" "(done_dialog 1)") ;设置变量
(action_tile "cancel" "(done_dialog 0)")
(setq what_value (start_dialog)) ;激活对话框
(unload_dialog id) ;卸载对话框
(princ)
)
(defun mn01 () ;显示子circ子对话框draw_circ是qiantao_main对话框文件中子对话框的名称
(if (not (new_dialog "draw_dijiao01" id)) (exit))
(setq d 0 l 0) ;设置编辑框初值变量
(set_tile "s_d" (itoa d))
(set_tile "s_l" (itoa l))
(action_tile "accept" "(getdata1)(done_dialog 2)")
(action_tile "cancel" "(done_dialog 3)")
(setq what_next (start_dialog))
)
(defun mn02 () ;显示子circ子对话框draw_circ是qiantao_main对话框文件中子对话框的名称
(if (not (new_dialog "draw_GBT6181_1986" id)) (exit))
(setq m 0) ;设置编辑框初值变量
(set_tile "s_d" (itoa m))
(action_tile "accept" "(getdata1)(done_dialog 4)")
(action_tile "cancel" "(done_dialog 5)")
(setq what_next (start_dialog))
)
(defun mn03 () ;显示子circ子对话框draw_circ是qiantao_main对话框文件中子对话框的名称
(if (not (new_dialog "draw_GBT9458_1988" id)) (exit))
(setq m 0);设置编辑框初值变量
(set_tile "s_d" (itoa m))
(action_tile "accept" "(getdata1)(done_dialog 6)")
(action_tile "cancel" "(done_dialog 7)")
(setq what_next (start_dialog))
)
(defun mn04 () ;显示子circ子对话框draw_circ是qiantao_main对话框文件中子对话框的名称
(if (not (new_dialog "draw_dijiao02" id)) (exit))
(setq m 0) ;设置编辑框初值变量
(set_tile "s_d" (itoa m))
(action_tile "accept" "(getdata1)(done_dialog 8)")
(action_tile "cancel" "(done_dialog 9)")
(setq what_next (start_dialog))
)
(defun mn05 () ;显示子circ子对话框draw_circ是qiantao_main对话框文件中子对话框的名称
(if (not (new_dialog "draw_GBT9459_1988" id)) (exit))
(setq m 0);设置编辑框初值变量
(set_tile "s_d" (itoa m))
(action_tile "accept" "(getdata1)(done_dialog 10)")
(action_tile "cancel" "(done_dialog 11)")
(setq what_next (start_dialog))
)
(defun mn06 () ;显示子circ子对话框draw_circ是qiantao_main对话框文件中子对话框的名称
(if (not (new_dialog "draw_JBZQ4321_1986" id)) (exit))
(setq m 0) ;设置编辑框初值变量
(set_tile "s_d" (itoa m))
(action_tile "accept" "(getdata1)(done_dialog 12)")
(action_tile "cancel" "(done_dialog 13)")
(setq what_next (start_dialog))
)
这是我正需要看的。 感谢前辈的分享。。。
页:
[1]