一、OpenDCL程序的部署(发布环境)
编写好的 OpenDCL 程序要发布给用户使用,一般需要在用户机子上安装部署 OpenDCL 的环境,否则你的程序是无法运行的。可以选择三种方式之一进行环境部署:
- 下载 OpenDCL Studio 软件包,官网最新版本[9.0.1.5] 大小35.5MB,在系统里安装后,打开 AutoCAD 运行 opendcl 命令即可加载环境支持
- 下载 OpenDCL Runtime 运行时文件 Windows Installer.MSI 专用包,下载链接同上,相比之下仅仅少了一个 IDE 编辑环境,文件大小 33MB
- 以上两种方法是 OpenDCL 官方推荐方法。在这里我们推荐更简单绿色的办法是复制 OpenDCL.x64.xx.arx、Runtime.Res.dll 到用户 AutoCAD 的支持路径下,其中 xx 为 AutoCAD 版本号,这种办法的部署文件最小,针对某个单一的 AutoCAD 版本的压缩包不到1MB
如果 Windows 系统安装了 OpenDCL Studio,函数库和运行时文件将保存在 C:\Program Files (x86)\Common Files\OpenDCL,此路径被记录在注册表,无需设置 AutoCAD支持路径即可正常加载 OpenDCL 函数。在向用户部署包含 OpenDCL 对话框的 AutoLisp 程序时,可采用以下代码置于程序开始,当 AutoCAD 中加载时,均可自动加载 OpenDCL 环境,并且同时考虑了以上多种可能。
;;功能: 自动加载 32/64 位 Opendcl 的支持库
;;参数: 不需要
;;返回: 成功后返回加载提示 如:OpenDCL Runtime [9.0.1.4] 已加载
;;用法: 放到一个 lisp 程序的最前面,CAD 加载 lisp 时本函数自动运行
(vl-load-com)
(setq ODCLREG (strcat "HKEY_LOCAL_MACHINE\\" (vlax-product-key)
"\\Applications\\OpenDCL"))
(or dcl_getversionex ;;判断 OPEDCL 环境是否加载
(if (setq Phd (vl-registry-read ODCLREG "Loader")) ;;ODCL 是否安装
(progn
(arxload Phd)
(setq ODCLREG nil Phd nil)
)
(progn ;;如果 OPENDCL 没有安装则搜索 arx 文件是否存在
(defun Load_OdclRuntime (/ vers arxname darx *error*)
(defun *error* (msg) ;;错误中断提示 (princ (strcat "\n程序加载失败,文件 " arxname " 缺失")) (princ) )
(setq vers (substr (getvar "acadver") 1 2))
(setq arxname (strcat "OpenDCL." (if (= (getenv "PROCESSOR_ARCHITECTURE") "AMD64") "x64." "") vers ".arx")) ;;区分 CAD 位
(if (setq darx (findfile arxname)) (if (null (member arxname (arx)))(arxload darx)) (exit) ;;支持路径未搜到 arx,调用错误中断 )
)
(Load_OdclRuntime) ;;运行加载函数
(setq Load_OdclRuntime nil) ;;释放加载函数
)
)
);;The End of Load ODCL
OpenDCL对话框编译
默认的 *.odcl 文件是二进制文件,可以被 ODCL 的专用函数加载,例如:(dcl-Project-Load “test.odcl” t nil),在 lisp 源码情况下运行是没有问题的。但是如果需要打包编译时,vlx 的打包程序并不能识别二进制文件,这时候有以下两种办法可以解决。