CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2021 开发者帮助

获取指向模型空间的指针

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

获取指向模型空间的指针

通过 ActiveX 函数添加实体时,需要标识要插入实体的模型空间或图纸空间。(在 ActiveX 术语中,实体是对象,但本教程将继续使用术语实体。若要告知 AutoCAD 新图元应占用哪个空间,需要获取指向该空间的指针。不幸的是,获取指向模型空间的指针并不是一个简单的单次函数。以下代码片段显示了需要如何设置操作:

(vla-get-ModelSpace (vla-get-ActiveDocument
  (vlax-get-Acad-Object)))

该函数从内到外工作,检索指向 AutoCAD 的指针。此指针将传递给函数,该函数检索指向 AutoCAD 中的活动图形(文档)的指针。然后,将活动文档指针传递给函数,该函数检索指向当前图形的模型空间的指针。vlax-get-Acad-Objectvla-get-ActiveDocumentvla-get-ModelSpace

这不是您想要一遍又一遍地键入的那种表达式。例如,当使用整个模型空间表达式时,使用 ActiveX 添加折线的代码会复杂得多:

(setq pline (vla-addLightweightPolyline
  (vla-get-ModelSpace
    (vla-get-ActiveDocument
      (vlax-get-Acad-Object)
    )
  )
  VLADataPts)
)
(vla-put-closed pline T)

这个功能肯定不太容易理解。不仅如此,在程序中创建实体的每个表达式中,您都会重复相同的嵌套函数集。这展示了全局变量为数不多的出色用途之一。花园路径应用程序可以向模型空间添加大量实体(想想路径中的所有图块),因此,设置一个全局变量来存储指向模型空间的指针,如以下代码所示:

(setq *ModelSpace* (vla-get-ModelSpace (vla-get-ActiveDocument 
                 (vlax-get-Acad-Object))))

您可以随时调用 ActiveX 实体创建函数时使用该变量。这个方案唯一棘手的事情是在开始绘制之前,变量必须准备好。因此,在加载应用程序时,将立即调用建立此变量。这些调用将放在程序文件中的任何调用之前。因此,它们在加载文件后立即执行。*ModelSpace**ModelSpace*setqvl-load-comdefun


路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2024-6-27 16:12

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部