明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3320|回复: 6

看到gu_xl版主在研究opendcl,转一个zml84的东东

[复制链接]
发表于 2012-12-24 21:48:44 | 显示全部楼层 |阅读模式
_OpendclUtils.lsp
;|;;DEMANDLOAD 系统变量        类型:整数        保存位置:注册表        初始值: 3         当图形包含由第三方应用程序创建的自定义对象时,指定 AutoCAD 是否以及何时按需加载此应用程序。        0 关闭按需加载。         1 在打开包含自定义对象的图形时按需加载源应用程序。此设置在调用应用程序的命令时,不按需加载源应用程序。         2 在调用应用程序的某个命令时按需加载源应用程序。该设置在用户打开包含自定义对象的图形时,不按需加载应用程序。         3 在打开包含自定义对象的图形或调用应用程序的某个命令时,按需加载源应用程序。 (command "OpenDCL") 功能是加载ODCL的支持模块*.arx,其中定义了几个lisp函数,大致如下:        1.  DCL_GETVERSIONEX  功能是显示当前ODCL的版本号。无参数。        2.  DCL_PROJECT_LOAD  功能是加载ODCL项目。参数是项目文件名称。;;|;;;;===================================================*;;; 功能:加载ODCL支持模块                                *(defun LOADRUNTIME (/)    ;; Demand load the OpenDCL.##.ARX. This requires the OpenDCL Runtime or Studio to be installed on each PC first.    (cond        ((= 'EXRXSUBR (type dcl_getversionex)))        ((= 2 (boole 1 (getvar "DEMANDLOAD") 2))         (command "OpenDCL")         (if (/= 'EXRXSUBR (type dcl_getversionex))             (progn                 (alert                     (strcat                         "The OpenDCL Runtime module failed to load. Please repair the OpenDCL installation and try again."                         "\n翻译如下:"                         "\nOpenDCL运行的模块无法加载。请OpenDCL修复安装,然后再试一次。"                     )                 )                 (exit)             )         )        )        ((progn             (alert                 (strcat                     "The OpenDCL Runtime module cannot be loaded because demand loading is disabled."                     "\nLoad the OpenDCL ARX file manually, or enable demand loading for commands by setting the DEMANDLOAD system variable to 2 or 3."                     "\nSee the \"ManualLoading.lsp\" sample for a demonstration."                     "\n翻译如下:"                     "\nOpenDCL运行的模块无法加载,因为自动加载已被禁用。"                     "\n请手动载入OpenDCL,或通过设置系统变量DEMANDLOAD值为2或3,以实现按需加载,。"                     "\n请参考“ManualLoading.lsp”示例。")             )             (exit)         )        )    ));;;===================================================*;;; 功能:加载ODCL项目文件                            *;;; 参数:PROJ ----项目文件名称(*.ODCL)             *(defun LOADODCLPROJ (PROJ / FN)    (cond        ;; 1.先搜索支持路径,如果找到就加载。        ((if (setq FN (findfile PROJ))             (dcl_project_load FN)         )        )        ;; 2.再从ODCL系统的安装目录“Samples”文件夹中寻找,如果找到就加载。        ((if             (or                 (setq FN (vl-registry-read                              "HKEY_LOCAL_MACHINE\\SOFTWARE\\OpenDCL"                              "SamplesFolder"                          )                 ) ;_ 32-bit location                 (setq FN (vl-registry-read                              "HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\OpenDCL"                              "SamplesFolder"                          )                 ) ;_ 64-bit location             )                (dcl_project_load (strcat FN PROJ))         )        )        ;; 该项目未能加载,显示提示信息,并退出。        (t         (alert             (strcat                 "\""                 PROJ                 "\""                 "无法加载。您可能需要将其添加到了ACAD支持路径,以使它加载正确!"             )         )         (exit)        )    ))(princ)


"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2012-12-24 21:49:55 | 显示全部楼层
  1. ManualLoading.lsp

  2. --------------------------------------------------------------------------------

  3. ;;; ManualLoading.lsp
  4. ;;; For OpenDCL Ver 4.0
  5. ;;; Edit kwb 20070225 GMT00:00:00
  6. ;;; Edit orw 20070518 GMT07:30:xx :: added 64 bit arx file selection
  7. ;;;                                       returns "OpenDCL.x64.17.ARX"
  8. ;;; Last Edit kwb as suggested by MichaelP 20070608 GMT00:30:xx
  9. ;;;                :: change location of dcl_GETVERSIONEX test.
  10. ;;

  11. ;|;;
  12. ;; This code block loads the OpenDCL.##.arx files if not already loaded
  13. ;; Note, Loader will return T if loaded or nil otherwise.
  14. ;;
  15. ;; If the OpenDCL.##.arx is loaded at startup or demand loaded
  16. ;; this routine need never run.

  17. 翻译如下:
  18.         这个代码块加载OpenDCL.##.ARX文件(如果尚无加载)
  19.         注意:如果已经加载或者加载成功后,将返回 T 。

  20.         如果OpenDCL.##.ARX 已经载入,本代码块将不做任何动作。
  21. ;;|;
  22. (or dcl_getversionex
  23.     ((lambda (/ PROC_ARCH ARXNAME ARXPATH)
  24.          ;;根据处理器的类型 和 AutoCAD的版本,确定需要加载的ODCL版本。
  25.          (setq ARXNAME
  26.                   (strcat "OpenDCL"
  27.                           (if
  28.                               (and
  29.                                   (setq
  30.                                       PROC_ARCH        (getenv "PROCESSOR_ARCHITECTURE")
  31.                                   )
  32.                                   (< 1 (strlen PROC_ARCH))
  33.                                   (eq "64"
  34.                                       (substr PROC_ARCH (1- (strlen PROC_ARCH)))
  35.                                   )
  36.                               )
  37.                                  ".x64."
  38.                                  "."
  39.                           )
  40.                           (substr (getvar "acadver") 1 2)
  41.                           ".arx"
  42.                   )
  43.          )
  44.          ;;尝试查找,尝试加载。
  45.          (cond
  46.              ((null (setq ARXPATH (findfile ARXNAME)))
  47.               ;;警示用户未能找到 arxfile
  48.               (alert
  49.                   (strcat
  50.                       "Couldn't find "
  51.                       ARXNAME
  52.                       "。"
  53.                       "\n你可能需要将它添加到Acad支持路径中。"
  54.                   )
  55.               )
  56.              )
  57.              ((null (arxload ARXPATH 'NIL))
  58.               ;;警示用户未能加载 arxfile
  59.               (alert (strcat "无法加载" ARXNAME "。"))
  60.              )
  61.              (t)
  62.          )
  63.      )
  64.     )
  65. )

 楼主| 发表于 2012-12-24 21:51:27 | 显示全部楼层
第一个没发好,
  1. _OpendclUtils.lsp

  2. --------------------------------------------------------------------------------

  3. ;|;;
  4. DEMANDLOAD 系统变量
  5.   类型:整数
  6.   保存位置:注册表
  7.   初始值: 3
  8.   当图形包含由第三方应用程序创建的自定义对象时,指定 AutoCAD 是否以及何时按需加载此应用程序。
  9.   0 关闭按需加载。
  10.   1 在打开包含自定义对象的图形时按需加载源应用程序。此设置在调用应用程序的命令时,不按需加载源应用程序。
  11.   2 在调用应用程序的某个命令时按需加载源应用程序。该设置在用户打开包含自定义对象的图形时,不按需加载应用程序。
  12.   3 在打开包含自定义对象的图形或调用应用程序的某个命令时,按需加载源应用程序。

  13. (command "OpenDCL") 功能是加载ODCL的支持模块*.arx,其中定义了几个lisp函数,大致如下:
  14.   1.  DCL_GETVERSIONEX  功能是显示当前ODCL的版本号。无参数。
  15.   2.  DCL_PROJECT_LOAD  功能是加载ODCL项目。参数是项目文件名称。
  16. ;;|;

  17. ;;;===================================================*
  18. ;;; 功能:加载ODCL支持模块                                *
  19. (defun LOADRUNTIME (/)
  20.     ;; Demand load the OpenDCL.##.ARX. This requires the OpenDCL Runtime or Studio to be installed on each PC first.
  21.     (cond
  22.   ((= 'EXRXSUBR (type dcl_getversionex)))
  23.   ((= 2 (boole 1 (getvar "DEMANDLOAD") 2))
  24.    (command "OpenDCL")
  25.    (if (/= 'EXRXSUBR (type dcl_getversionex))
  26.        (progn
  27.      (alert
  28.          (strcat
  29.        "The OpenDCL Runtime module failed to load. Please repair the OpenDCL installation and try again."
  30.        "\n翻译如下:"
  31.        "\nOpenDCL运行的模块无法加载。请OpenDCL修复安装,然后再试一次。"
  32.          )
  33.      )
  34.      (exit)
  35.        )
  36.    )
  37.   )
  38.   ((progn
  39.        (alert
  40.      (strcat
  41.          "The OpenDCL Runtime module cannot be loaded because demand loading is disabled."
  42.          "\nLoad the OpenDCL ARX file manually, or enable demand loading for commands by setting the DEMANDLOAD system variable to 2 or 3."
  43.          "\nSee the "ManualLoading.lsp" sample for a demonstration."
  44.          "\n翻译如下:"
  45.          "\nOpenDCL运行的模块无法加载,因为自动加载已被禁用。"
  46.          "\n请手动载入OpenDCL,或通过设置系统变量DEMANDLOAD值为2或3,以实现按需加载,。"
  47.          "\n请参考“ManualLoading.lsp”示例。")
  48.        )
  49.        (exit)
  50.    )
  51.   )
  52.     )
  53. )


  54. ;;;===================================================*
  55. ;;; 功能:加载ODCL项目文件                            *
  56. ;;; 参数:PROJ ----项目文件名称(*.ODCL)             *
  57. (defun LOADODCLPROJ (PROJ / FN)
  58.     (cond
  59.   ;; 1.先搜索支持路径,如果找到就加载。
  60.   ((if (setq FN (findfile PROJ))
  61.        (dcl_project_load FN)
  62.    )
  63.   )
  64.   ;; 2.再从ODCL系统的安装目录“Samples”文件夹中寻找,如果找到就加载。
  65.   ((if
  66.        (or
  67.      (setq FN (vl-registry-read
  68.             "HKEY_LOCAL_MACHINE\\SOFTWARE\\OpenDCL"
  69.             "SamplesFolder"
  70.         )
  71.      ) ;_ 32-bit location
  72.      (setq FN (vl-registry-read
  73.             "HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\OpenDCL"
  74.             "SamplesFolder"
  75.         )
  76.      ) ;_ 64-bit location
  77.        )
  78.     (dcl_project_load (strcat FN PROJ))
  79.    )
  80.   )
  81.   ;; 该项目未能加载,显示提示信息,并退出。
  82.   (t
  83.    (alert
  84.        (strcat
  85.      """
  86.      PROJ
  87.      """
  88.      "无法加载。您可能需要将其添加到了ACAD支持路径,以使它加载正确!"
  89.        )
  90.    )
  91.    (exit)
  92.   )
  93.     )
  94. )


  95. (princ)
  96. 体验新版博客

重新发下
发表于 2012-12-25 09:06:18 | 显示全部楼层
发表于 2012-12-31 22:18:32 | 显示全部楼层
帮顶下,看不懂楼主发这个帖是什么意思
发表于 2013-1-2 07:22:37 来自手机 | 显示全部楼层
支持一下,,好东西
发表于 2014-6-7 17:09:02 | 显示全部楼层
学习了。感谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-9-8 08:08 , Processed in 0.203460 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表