通过 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 实体创建函数,都可以使用该变量。这个方案唯一棘手的事情是变量必须在你开始绘制之前准备好。因此,建立此变量将在加载应用程序时调用,在调用 to 之后立即调用。这些调用将放在程序文件中的任意调用之前。因此,它们会在加载文件后立即执行。*ModelSpace**ModelSpace*setqvl-load-comdefun |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-1-8 19:11
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.