获取指向模型空间的指针
通过 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 |
|Archiver|CAD开发者社区
( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-3-14 05:39
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.