中望CAD自动加载OpenDCL的ZRX支持库代码
本帖最后由 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/
谢谢分享,还没有用上中望。 请问下,在哪里下载支持中望2025的opendcl啊? 有支持中望的OpenDCL吗 zark 发表于 2024-8-25 10:23
有支持中望的OpenDCL吗
已经搞定了,谢谢
hnanky 发表于 2024-8-23 20:41
请问下,在哪里下载支持中望2025的opendcl啊?
下载地址已更新。 谢谢大侠为我们答疑解惑,万分感谢! autocad如何自动加载呢? ajunseo 发表于 2024-9-11 19:55
autocad如何自动加载呢?
;;//代码块,功能为加载支持AutoCAD的OpenDCL运行库OpenDCL.xx.ARX文件(如果尚无加载,可自动判断AutoCAD版本(32位和64位)并加载相应ARX文件//
;;注意:如果已经加载或者加载成功后,将返回 T
;;如果OpenDCL.xx.ARX已经载入,本代码块将不做任何动作。
;;(dcl-getversionex) 获取OpendDCL版本
;;(Arxload "OpenDCL.x64.19.arx")
(or (dcl-getversionex)
((lambda (/ PROC_ARCH ARXNAME ARXVER ARXPATH)
;;根据处理器的类型 和 AutoCAD的版本,确定需要加载的ODCL版本。
(setq ARXNAME
(strcat "OpenDCL"
(if (and (setq PROC_ARCH (getenv "PROCESSOR_ARCHITECTURE")) (< 1 (strlen PROC_ARCH)) (eq "64" (substr PROC_ARCH (1- (strlen PROC_ARCH)))))
".x64."
"."
)
(setq ARXVER (substr (getvar "ACADVER") 1 2))
".arx"
)
)
;;尝试查找,尝试加载。
(cond
((null (setq ARXPATH (findfile ARXNAME)))
;;警示用户未能找到 zrxfile
(alert (strcat "OpenDCL支持文件 " ARXNAME "无法加载。" "\n你需要将它添加到中望CAD的支持路径中。"))
(exit)
)
((null (arxload ARXPATH 'NIL))
;;警示用户未能加载 zrxfile
(alert (strcat "无法加载 " ARXNAME "。"))
(exit)
)
(T)
)
))
)
这是论坛里大佬写的自动加载程序,出处暂时忘掉了,贴出来供参考。 希望以后越来越多二开支持中望cad
页:
[1]