可视opendcl的学习笔记 联系客服

发布时间 : 星期日 文章可视opendcl的学习笔记更新完毕开始阅读3dde3629e2bd960590c67733

(princ) )

;确保将ObjectDCL.arx 载入 AutoCAD. (defun ObjectDCL_LoadArx ()

(if (not (member \

(arxload \ ) )

3. 运行MyDockable

进入AutoCAD2000,加载MyDockable.lsp。执行MyDockable命令,会立即在Acad窗口的左侧显示MyDockable对话框,如图4.2所示,只是对话框中的3个父节点都没有展开。

可停靠对话框也是一种非模式对话框,是用户与AutoCAD进行交互式操作的有力工具。下面我们就和AutoCAD进行交互操作。

双击“线性图形”父节点,展开该节点,在逐个单击其子节点,则会在Acad的图形窗口中绘出子节点对应的直线、多线和多段线图形。

在Acad的命令行键入Color命令,把当前颜色置为红色。

双击“圆性图形”父节点,展开该节点,在逐个单击其子节点,则会在Acad的图形窗口中绘出子节点对应的红色的圆、椭圆和圆环图形。

类似地把当前颜色置为蓝色,单击文字1,文字2,文字3节点,可绘出蓝色的Text1,Text2,Text3三个文本图形。

这个话题我们就讨论到这里。下一次,我们将对配置表对话框(Config Tab)的设计和编程进行讨论。

ObjectDCL学习笔记(5)

环境配置对话框ConfigTab的设计和调用

在AutoCAD的[文件]菜单中有一个“系统配置”菜单项,执行该菜单项对应的命令,会弹出

AutoCAD的“选项”对话框,用户可以对Acad环境进行设置。在ObjectDCL 2.1中提供的Config Tab类型对话框,使用户可以向AutoCAD的“选项”对话框中附加一个自己定制的配置卡(属性页)。在某些场合,这项功能还是很有用的。这次就让我们设计一个配置对话框(Config Tab),并对其编程和调用方式进行讨论。

在设计对话框之前,建议还是先创建一个AutoLisp框架程序,文件名叫MyConfig.lsp,还是存放到D:\\MyODcl文件夹中。

1. 创建自己的配置对话框

1.1设计对话框 运行ObjectDCL.exe,进入ObjectDCL编辑环境。在Projects菜单中选择添加配置卡对话框菜单项(Add Config Tab)就得到了一个配置卡对话框,然后像图5.1那样,摆上6个Label控件,摆上6个TextBox控件,2个PictureButton控件和1个PictureBox控件。

注意,对话框的大小最好就不必动了,免得最终显示时,各控件的布局不够协调。

1.2设置对话框和控件的属性

(1)在对话框的属性页中,把CfgTab的值改为:“我的配置 ”。注意其中的空格是故 意加的。

(2)把 6个Label控件的Caption分别改为图5.1那样的内容。

(3)把6个TextBox控件的Font分别置为“宋体”,Size设置为10。

(4)把2个PictureButton控件的BackColor分别置为111,Font分别置为“宋体”,Size设置为10,Style分别置为“1 - FlatButton”,Caption分别置为“调入设置”和“保存设置”。

(5)在PictureBox控件中调入一个图片,使整个布局美观协调起来。 现在,对话框应该是图5.1样子了。 2.给对话框的事件编程

2.1一个普通函数

先准备一个对AutoCAD的Acad.cfg文件进行操作的共用函数: (defun LoadAndSetMyConfigValue()

;从 acad.cfg 文件的 AppData 段中检索数据

(setq #ProName (getcfg \ #MapNum (getcfg \ #CreDate (getcfg \ #Deviser (getcfg \ #Assessor(getcfg \ #Ratifier(getcfg \ )

;把检索出的数据置于文本框中

(if (not #ProName)(setq #ProName \

(Odcl_Control_SetProperty \ (if (not #MapNum)(setq #MapNum \

(Odcl_Control_SetProperty \ (if (not #CreDate)(setq #CreDate \

(Odcl_Control_SetProperty \ (if (not #Deviser)(setq #Deviser \

(Odcl_Control_SetProperty \ (if (not #Assessor)(setq #Assessor \

(Odcl_Control_SetProperty \ (if (not #Ratifier)(setq #Ratifier \

(Odcl_Control_SetProperty \ )

2.2对话框初始化函数 ;对话框初始化

(defun c:DclForm1_OnInitialize () (LoadAndSetMyConfigValue) )

2.3处理PictureButton按钮控件的单击事件 ;TextButton1(调入设置)按钮的单击事件

(defun c:DclForm1_GraphicButton1_OnClicked () (LoadAndSetMyConfigValue) )

;TextButton1(保存设置)按钮的单击事件

(defun c:DclForm1_GraphicButton2_OnClicked () ;提取各文本框的当前值

(setq #ProName (Odcl_Control_GetProperty \ (setq #MapNum (Odcl_Control_GetProperty \ (setq #CreDate (Odcl_Control_GetProperty \ (setq #Deviser (Odcl_Control_GetProperty \ (setq #Assessor(Odcl_Control_GetProperty \ (setq #Ratifier(Odcl_Control_GetProperty \ ;把各文本框的当前值写到 acad.cfg 文件的 AppData 段中 (setcfg \ (setcfg \ (setcfg \ (setcfg \ (setcfg \ (setcfg \ )

2.4 主程序

;主程序:在AutoCAD的系统配置对话框中添加自己的图形 (defun c:MyConfig(/ #ProName ;项目名称 #MapNum ;图纸编号 #CreDate ;创建时间 #Deviser ;设计者 #Assessor ;审核者 #Ratifier ;批准者 )

(ObjectDCL_LoadArx)

(Odcl_LoadProject \

(Odcl_Form_Show \ (princ) )

3. 运行MyConfig

进入AutoCAD2000,加载MyConfig.lsp。执行MyConfig命令后,Acad表面上没有任何反应,实际上已成功地创建了我们自己的配置卡。

执行AutoCAD的[文件]菜单中的“系统配置”菜单项,AutoCAD弹出的“选项”对话框将如图5.2所示,出现了“我的配置”属性页,这正是我们所期待的,只是6个文本框是空白的。用户可往其中键入文字后退出。再打开AutoCAD的“选项”对话框,6个文本框中将显示你键入的文字。如果单击“保存设置”按钮,6个文本框中的内容将保存到AutoCAD的Acad.cfg文件中。

关闭Acad后重新运行Acad,加载MyConfig.lsp,执行MyConfig命令,执行AutoCAD的[文件]菜单中的“系统配置”菜单项,AutoCAD弹出的“选项”对话框中,“我的配置”属性页中将自动显示你上次保存的内容,这是由于在对话框的初始化事件处理函数中,调用了(LoadAndSetMyConfigValue) 函数的缘故。

关于ObjectDCL,暂时就讨论到这里