CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2019 开发者帮助

关于性能注意事项 (AutoLISP/ActiveX)

2024-5-18 17:48| 发布者: admin| 查看: 76| 评论: 0|原作者: admin|来自: AutoCAD

关于性能注意事项 (AutoLISP/ActiveX)

应避免重复调用以访问 AutoCAD 应用程序、活动文档和 ModelSpace 对象,因为它们会对性能产生负面影响。

注意:AutoLISP 中的 ActiveX 支持仅限于 Windows。

应将应用程序设计为一次性获取这些对象,并在整个应用程序中引用获取的对象指针。下面的代码演示了可以定义的三个函数,以分别返回 Application、active Document 和 ModelSpace 对象:

(setq *acad-object* nil) ; Initialize global variable
(defun acad-object ()
  (cond (*acad-object*) ; Return the cached object
    (t
      (setq *acad-object* (vlax-get-acad-object))
    )
  )
)

(setq *active-document* nil) ; Initialize global variable
(defun active-document ()
  (cond (*active-document*) ; Return the cached object
    (t
      (setq *active-document* (vla-get-activedocument (acad-object)))
    )
  )
)

(setq *model-space* nil) ; Initialize global variable
(defun model-space ()
  (cond (*model-space*) ; Return the cached object
    (t
      (setq *model-space* (vla-get-modelspace (active-document)))
    )
  )
)

例如,您可以使用以下函数调用绘制一个圆:

(vla-addCircle (model-space) (vlax-3d-point '(3.0 3.0 0.0)) 2.0)

model-space 函数返回活动文档的模型空间,如有必要,使用 active-document 函数访问 Document 对象。如有必要,active-document 函数又会调用 acad-object 来获取 Application 对象。


路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1   苏公网安备32011402011833)

GMT+8, 2024-12-15 11:54

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部