本帖最后由 wxytiger 于 2024-8-30 21:06 编辑
根据AutoCAD自动加载OpenDCL支持库代码改写的,支持中望CAD自动加载ZRX支持库的代码,目前在中望CAD2024Pro专业版上测试通过,没有其它版本,有需要的可自行下载测试。
注意:OpenDCL.x64.20xx.zrx和对应版本(语言)的运行库 Runtime.Res.dll 文件需要放在CAD支持的搜索文件路径内。
- ;;//代码块,功能为加载支持ZWCAD的OpenDCL运行库OpenDCL.xx.ZRX文件(如果尚无加载,可自动判断ZWCAD版本(32位和64位)并加载相应ZRX文件//
- ;;注意:如果已经加载或者加载成功后,将返回 T
- ;;如果OpenDCL.xx.ZRX已经载入,本代码块将不做任何动作。
- ;;(dcl-getversionex) 获取OpendDCL版本
- ;;(zrxload "OpenDCL.x64.2023.zrx")
- (if (not dcl_loaded)
- ((lambda (/ PROC_ARCH ZRXNAME ZRXVER ZRXPATH)
- ;;根据处理器的类型 和 AutoCAD的版本,确定需要加载的ODCL版本。
- (setq ZRXNAME
- (strcat "OpenDCL"
- (if (and (setq PROC_ARCH (getenv "PROCESSOR_ARCHITECTURE")) (< 1 (strlen PROC_ARCH)) (eq "64" (substr PROC_ARCH (1- (strlen PROC_ARCH)))))
- ".x64."
- "."
- )
- (if (setq ZRXVER (substr (getvar "vernum") 1 2))
- (cond
- ((= "16" ZRXVER) (setq ZRXVER "2017"))
- ((= "24" ZRXVER) (setq ZRXVER "2023"))
- (T (setq ZRXVER (strcat "20" ZRXVER)))
- )
- )
- ".zrx"
- )
- )
- ;;尝试查找,尝试加载。
- (cond
- ((null (setq ZRXPATH (findfile ZRXNAME)))
- ;;警示用户未能找到 zrxfile
- (alert (strcat "OpenDCL支持文件 " ZRXNAME "无法加载。" "\n你需要将它添加到中望CAD的支持路径中。"))
- (exit)
- )
- ((null (zrxload ZRXPATH 'NIL))
- ;;警示用户未能加载 zrxfile
- (alert (strcat "无法加载 " ZRXNAME "。"))
- (exit)
- )
- (t (setq dcl_loaded T) (princ))
- )
- ))
- )
2024年8月28日修正:发现中望CAD对未知函数(dcl-getversionex)无反应,也不返回nil值,改写了一下。
(exit)语句位置错误,已修正。
另外给出OpenDCL编辑器和支持库的下载地址:https://sourceforge.net/projects/opendcl/
|