- 积分
- 2853
- 明经币
- 个
- 注册时间
- 2022-3-24
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
30明经币
我想知道如何将dcl对话框中的popup_list的key值转换到lisp函数中,并且下一次使用该命令是会重复上一次选择的key值,如下列代码所示,在DCL中的d5如何反馈到lisp中的c3d5,并下一次使用该命令时对话框显示上一次使用该命令时显示的值
- (defun c:c3e(/ p1 p2 p3 p4 p5 p6 p7 p8 e1 p9 d5 d6 d7 d8 d9 o0s pt1 i1 i2 i3 i4 i5 i6 i7 i8 i9 i10 i11 i12 i13 i14 i15 i16 i17 i18 i19) ;直管一键展开绘制
- (setvar "cmdecho" 0) ;关闭普通命令提示信息
- (setvar "osmode" 0) ;关闭对象捕捉状态
- (command "._undo" "_begin")
- (defun make-dclCS (/ lst_str str file f );;面板的界面显示dcl
- (setq lst_str
- '(
- "矩形直管口字型展开程序:dialog"
- "{ // start dcl"
- "label = "矩形直管口字型展开程序";"
- ":row{"
- ":boxed_column{"
- ":edit_box{label="直管序号为(个):";key="d1"; edit_width=10;}"
- ":edit_box{label="直管长度为(mm):";key="d2"; edit_width=10;}"
- ":edit_box{label="直管宽度为(mm):";key="d3"; edit_width=10;}"
- ":edit_box{label="直管高度为(mm):";key="d4"; edit_width=10;}"
- ":popup_list{label="板材厚度为(mm):";key="d5";list="1.5t\\n0.8t\\n1.0t\\n1.2t\\n2.0t\\n3.0t"; edit_width=10;}"
- "} "
- ":image{width=30;height=4;key="img1"; color=-16;}} "
- ":row{"":button{label="确定(&Q)";key="accept";
- is_default=true;height=2;}" ":button{label="取消(&C)";key="cancel";is_cancel=true;height=2;}"":button{label="帮助(&H)";key="help";is_cancel=true;height=2;}" "}"
-
- "fixed_width=true;"
- "alignment=left;"
- "} // end dll" ;结尾
- )
- )
- (setq file (vl-filename-mktemp "DclTemp.dcl"))
- (setq f (open file "w"))
- (foreach str lst_str
- (princ "\n" f)
- (princ str f)
- )
- (close f)
- ;;返回
- file
- )
- ;;---------开始写面板调用函数
- (defun getdata2() ;获取当前dcl界面里面控件key的当前值,并保存为全局变量,这里需要保存值的变量名字(JH bhd2 JR)尽量起的复杂一点,否则会引起全局变量冲突
- (setq c3d1 (atof(get_tile "d1")))
- (setq c3d2 (atof(get_tile "d2")))
- (setq c3d3 (atof(get_tile "d3")))
- (setq c3d4 (atof(get_tile "d4")))
- (setq c3d5 (atof(get_tile "d5")))
- )
- (if (not c3d1)
- (progn (setq c3d1 1) ;判断变量是否存在并且为字符串,如果不是则进行初始化定义
- (setq c3d2 500);判断变量是否存在并且为字符串,如果不是则进行初始化定义
- (setq c3d3 500);判断变量是否存在并且为字符串,如果不是则进行初始化定义
- (setq c3d4 2697);判断变量是否存在并且为字符串,如果不是则进行初始化定义
- ));判断变量是否存在并且为字符串,如果不是则进行初始化定义
-
-
- (if (= (setq dcl_id (load_dialog (setq Dcl_File(make-dclCS)))) 0)(progn(alert "\n无法显示对话框!")(exit)))
- (if Dcl_File(vl-file-delete Dcl_File));加载后删除DCL文件
- (if(not (new_dialog "矩形直管口字型展开程序" dcl_id))(progn(alert "\n无法显示对话框!")(exit)))
- (start_image "img1")
- (setq max_x (dimx_tile "img1"))
- (setq max_y (dimy_tile "img1"))
- (slide_image 0 0 max_x max_y "D:/插件/sld/1.sld")
- (end_image);显示图形对话框
- (mode_tile "d1" 2);设置d1为焦点
-
- (set_tile "d1" (rtos c3d1 2 2)) ;将对应key的全局变量传递给控件,以便显示界面的时候直接显示上次记忆的控件key值
- (set_tile "d2" (rtos c3d2 2 2));将对应key的全局变量传递给控件
- (set_tile "d3" (rtos c3d3 2 2));将对应key的全局变量传递给控件
- (set_tile "d4" (rtos c3d4 2 2));将对应key的全局变量传递给控件
-
- (action_tile "accept" "(getdata2)(done_dialog 1)") ;当按下确认按钮的时候保存控件值,然后退出界面,并执行对于功能函数
- (action_tile "cancel" "(getdata2)(done_dialog 0)") ;当按下取消按钮的时候保存控件值,然后退出界面
- (action_tile "help" "(getdata2)(done_dialog 2)")
- (setq re (start_dialog))
- (unload_dialog dcl_id)
- (cond ((= re 0)
- (setq dss (get_tile "d5"))
- (princ dss)
- )
- ((= re 2)
-
- (ALERT
- "\n 1ccccccc"
- )
-
- )
- ((= re 1)
- (princ "\n单击了确定按钮"))))
|
最佳答案
查看完整内容
你的意思是 讓 每個 輸入項及選單 有記憶功能 ?
改好了,請參考看看!
|