CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 文档中心

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

2023-1-8 01:05| 发布者: admin| 查看: 222| 评论: 0|来自: AutoCAD

摘要: 应避免重复调用访问 AutoCAD 应用程序、活动文档和模型空间对象,因为它们会对性能产生负面影响。

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

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

应将应用程序设计为一次性获取这些对象,并在整个应用程序中引用获取的对象指针。下面的代码演示了可以定义用于分别返回应用程序、活动文档和模型空间对象的三个函数:

(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)

模型空间函数返回活动文档的模型空间,如有必要,使用活动文档函数访问 Document 对象。如有必要,活动文档函数反过来调用 acad-object 以获取应用程序对象。


路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2024-5-19 12:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部