世人皆醉 发表于 2022-6-30 11:33:24

对话框如何将该控件在上一次运行时的值作为控件的默认值

各位大佬,对话框控件的编辑框如何设置成上一次运行的值作为默认的值,求大佬告知,举个例子,我想画一个自动展开的圆管,那么我需要两个值,圆管的直径和圆管的长度,那么我想让这两个变量的默认值为上一次运行这个函数时使用的变量该如何设置呢,是设置对话框控件还是设置LISP函数,求大佬告知




(defun getdata();定义getdata 函数,其功能是获取三个编辑框的最终数据
(setq d1(atof(get_tile "X")));获取编辑框X的值,转换为实数后赋给变量xc
(setq d2(atof(get_tile "Y")));获取编辑框Y的值,转换为实数后赋给变量yc
)
(setq sdt 0);设置状态参数sdt为0
(setq id(load_dialog "D:\\插件\\DCL\\C1"));装入DCL文件,c1是对话框文件名
(if (< id 0)(exit)) ;如果装入失败则退出
(setqd1 548.5 d2 3500);设变量初值d1为圆管的直径,D2为圆管的长度
(if (not (new_dialog "圆管一键展开" id)) (exit));显示名字为yuan的对话框,如果失败则退出
   (setq x1(dimx_tile "round"));得到图象宽,img_cr是图像的关键字
(setq y1(dimy_tile "round"));得到图象高
(set_tile "X" (rtos d1 2 2));设置编辑框X初值
(set_tile "Y" (rtos d2 2 2));设置编辑框Y初值
(action_tile "accept" "(getdata) (done_dialog 1)");定义OK按钮的活动是执行getdata函数,然后以1为状态值关闭对话框
(action_tile "cancel" "(done_dialog -1)");定义Cancel按钮时的活动是以-1为状态值关闭对话框
(setq sdt(start_dialog));显示对话框,将得到关闭对话框时的状态值
(unload_dialog id);卸载对话框文件
(if (> sdt 0);判断关闭对话框时的状态值,即单击哪个按钮关闭的对话框
这个是LISP


圆管一键展开:dialog{ //定义名字为圆管一键展开的对话框
label= "圆管一键展开";//显示在对话框顶部的标签
:row{ //插入间隔Spacer_1
:edit_box{ //引用编辑框1
      label="圆的直径为X(mm):"; //编辑框1的标签
      edit_width=8; //编辑框1的宽度
      key="X";//编辑框1的关键字
      mnemonic="X";//编辑框1的热键
             }}//编辑框1引用结束
:row{
:edit_box{ //引用编辑框2
      label="圆的长度为&Y(mm):"; //编辑框2的标签&之后的字符是热键
      width=8; //编辑框2的宽度
      key="Y";//编辑框2的关键字
             }//编辑框2引用结束
}//行引用结束
ok_cancel;// 引用ok_cancel组合控件
}

这个是对话框



llsheng_73 发表于 2022-6-30 11:33:25

如果上次可以指几天前在这个电脑上使用时的参数,可以用注册表来记录那些数据,对话框出来后,用读取注册表得到的数据填写控件

如果是某个图形文件上一次用这个对话框(可能是别的电脑),那可以把数据存到LDATA中,随DWG保存

如果仅是这次启动的CAD打开的当前dwg,那么用全局变量存放就行,如果想切换到其它dwg也可以用,那么可以用黑板来传递数据

世人皆醉 发表于 2022-6-30 12:24:12

llsheng_73 发表于 2022-6-30 11:57
如果上次可以指几天前在这个电脑上使用时的参数,可以用注册表来记录那些数据,对话框出来后,用读取注册表 ...

只是在这个启动的CAD就好,该咋实现呢,大佬,刚学,能讲的详细一点吗

xj6019 发表于 2022-6-30 17:25:48

本帖最后由 xj6019 于 2022-6-30 17:27 编辑


你的微信截图那样 应该行吧

yshf 发表于 2022-7-1 09:28:53

程序进行完成后将值保存到一个文本文件中,下次程序运行时再读取文本文件中的值,这样简单实用。
页: [1]
查看完整版本: 对话框如何将该控件在上一次运行时的值作为控件的默认值