wxytiger 发表于 2024-8-21 12:46:09

中望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/


lxl217114 发表于 2024-8-23 08:32:39

谢谢分享,还没有用上中望。

hnanky 发表于 2024-8-23 20:41:48

请问下,在哪里下载支持中望2025的opendcl啊?

zark 发表于 2024-8-25 10:23:17

有支持中望的OpenDCL吗

zark 发表于 2024-8-25 10:26:09

zark 发表于 2024-8-25 10:23
有支持中望的OpenDCL吗

已经搞定了,谢谢

wxytiger 发表于 2024-8-30 15:54:44

hnanky 发表于 2024-8-23 20:41
请问下,在哪里下载支持中望2025的opendcl啊?

下载地址已更新。

火龙果2022 发表于 2024-9-1 09:06:54

谢谢大侠为我们答疑解惑,万分感谢!

ajunseo 发表于 2024-9-11 19:55:24

autocad如何自动加载呢?

wxytiger 发表于 2024-9-17 22:55:34

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)
               )
       ))
)
这是论坛里大佬写的自动加载程序,出处暂时忘掉了,贴出来供参考。

lxl304712346 发表于 2024-10-18 21:59:22

希望以后越来越多二开支持中望cad
页: [1]
查看完整版本: 中望CAD自动加载OpenDCL的ZRX支持库代码