《 可视化对话框制作工具(OpenDCL Studio) 8.2.1.2》是一款应用程序设计软件,用户可以在软件上设计CAD的命令启动界面,配置命令对话框,功能非常丰富,操作也很简单,是一款很不错的软件,有需要的欢迎来下载哟!
OpenDCL Runtime公开的AutoLISP接口采用了从面向对象编程中借用的概念,但严格来说,AutoLISP不是面向对象的。然而,有一个底层的OpenDCL对象模型,在为OpenDCL编程时理解这个模型是有帮助的。 OpenDCL用于调用对象方法的约定是将对象实例指定为方法函数的第一个参数。
OpenDCL对象在AutoLISP中表示为实体名称(实体名称只是指向对象实例的内存指针)。加载OpenDCL项目时,OpenDCL会自动为项目中定义的每个表单设置AutoLISP符号。表单处于活动状态时,OpenDCL为表单上的每个控件设置AutoLISP符号。窗体和控件的VarName属性确定用于引用对象的AutoLISP符号的名称。例如,通过使用表单句柄作为第一个参数调用Form-Show方法来显示表单:
(dcl-Form-Show Project1 / Form1)
在此示例中,Project1 / Form1是一个AutoLISP符号,由OpenDCL自动设置为在加载项目时指向表单。
OpenDCL对象模型
暴露给AutoLISP的基本OpenDCL对象类型是控件。在内部,表单是一种特殊类型的控件,因此控件方法通常也适用于表单。 OpenDCL公开的另一个基本对象是项目。 OpenDCL还公开了ImageList,BinFile和AxObject等专用对象。(dcl-
每个控件都包含一个属性列表。不同类型的控件包含不同的属性,但给定类型的所有控件都包含相同的属性。某些控件(如ActiveX控件)可能包含与内置OpenDCL属性分开公开的其他属性。
OpenDCL控制句柄
AutoLISP代码中的控件(和表单)由包含控件句柄的AutoLISP符号引用。当表单的实例处于活动状态时,这些符号将自动在每个AutoCAD绘图的AutoLISP命名空间中创建。此句柄的默认AutoLISP符号名称是通过连接项目键,表单名称和控件名称构造的,所有这些都由正斜杠字符分隔
OpenDCL应用程序由AutoLISP代码和OpenDCL项目数据组成。 OpenDCL项目数据在OpenDCL Studio中创建和编辑,可以作为单独的.odcl文件存在,也可以作为AutoLISP代码中的数据存在。
OpenDCL使用事件驱动的编程模型,其中用户界面事件触发对执行应用程序工作的事件处理程序的调用。典型的OpenDCL应用程序包括加载和显示表单的代码,以及在显示表单后管理表单的事件处理程序。事件处理程序响应用户操作,例如按下按钮或选择列表中的项目。
显示OpenDCL表单的AutoLISP代码必须首先确保已加载OpenDCL运行时模块。这是通过执行OPENDCL命令利用AutoCAD的需求加载功能来完成的。无需检查运行时是否已加载 - 如果已加载,则命令不执行任何操作。
包装应用程序
出于所有实际目的,打包OpenDCL应用程序进行部署与打包任何AutoLISP应用程序进行部署没有什么不同。大多数开发人员选择将AutoLISP文件转换为快速加载的lisp(.fas)或编译和打包的lisp(.vlx)文件,然后再将其部署到最终用户,但这对于内部应用程序来说可能不是必需或不可取的。
准备AutoLISP文件进行部署时,包含所有相关文件非常重要,例如OpenDCL项目文件,数据文件和实用程序文件。编写不使用硬编码文件路径的代码也很重要,这样无论安装在何处,应用程序都能正常工作。
处理依赖文件加载而不需要硬编码路径的常用方法是将应用程序的安装文件夹添加到AutoCAD支持路径。但是,这种方法存在风险,因为如果从AutoCAD支持路径中意外删除了应用程序路径,或者支持路径超出其允许的长度,则可能导致失败。更强大的解决方案是将安装路径写入应用程序的注册表项,然后在运行时将保存的路径作为所需文件的文件名的前缀。
许多开发人员希望打包他们的OpenDCL项目文件,以便最终用户或第三方无法轻松查看或更改其内容。将.odcl文件与相关的AutoLISP文件分开打包的标准方法使这变得不可能。 OpenDCL通过允许OpenDCL项目数据作为数据直接包含在AutoLISP代码中来提供此问题的解决方案,从而使文件能够编译为包含AutoLISP代码和OpenDCL项目数据的单个.vlx。嵌入项目数据要求从OpenDCL Studio以.lsp文件扩展名保存OpenDCL项目。手动键入扩展名为.lsp的目标文件名会导致OpenDCL Studio以编码的纯文本格式保存文件,以便可以将其内容直接复制并粘贴到lisp代码中,然后使用(dcl-Project-Import)加载功能