VLA创建块定义an
我好像被卡住了。。梳理了所有文档和谷歌搜索。。。
我错过了什么?
似乎无法将对象添加到我的块定义中。。。
vl load com已加载
已加载ActiveDocument。。。
Acad对象已加载。。。
(setq fax (vlax-ename->vla-object far)) ;returns #<VLA-OBJECT IAcadSolid 0000024d51846d98>
(setq blk (vla-get-Blocks doc)) ;returns #<VLA-OBJECT IAcadBlocks 0000024d3ecb3a38>
(setq fab (vla-Add blk fpa "_ClosedFilled")) ;returns #<VLA-OBJECT IAcadBlock 0000024d37310cf8>
(setq fax (vla-CopyObjects doc fax fab)) ;returns nothing!!!!????
你的想法?。。。。。。。。。。。。 一个答案首先去谷歌https://www.cad-notes.com/how-to-add-objects-in-your-drawing-into-an-autocad-block/ 我跟踪了你的链接BIGAL。。。一直到李·麦克的“AddObjectstoBlock”Lisp程序。。。。我在他的例程中看到了类似的语法:
(vla CopyObjects(ActiveDoc变量)(要添加的对象列表)(块参照名称))
我还是不明白为什么我的不能用。。。我在想,可能是实体变量或块引用变量的形式不正确。。。也许我无法添加从“vlax ename->vla object x”获得的单个实体。。。可能它需要一个选择集数组。。。也许它在添加对象之前需要一些其他信息。。。。我不知道。。。 你好
为了避免安全数组,只需使用vlax调用,此外还需要将vla对象作为列表。
(vlax-invoke doc 'CopyObjects (list fax) fab)
哦!哇!我花了一整天的时间旋转轮子。。谢谢Tharwat。。。我会试试看,然后回来汇报。。。。
有趣的是,我也尝试过这种方法,但没有列出。。相同零。。
所以我想说清楚。。。第一种方法确实需要一个安全的对象数组?安全阵列也可以包含单个对象吗?仅供将来参考。。。
谢谢你们! 不客气。
当然,请查看以下内容,以供您参考,其中包含单个对象(而不是已婚对象)。
(setq safe (vlax-make-safearray vlax-vbObject '(0 . 0)))
(vlax-safearray-put-element safe 0 fax)
(vla-CopyObjects doc safe fab)
我总是忘记这些方法有时需要安全数组。。。
让我想,在任何地方都需要变量类型的参数吗?因此,人们将被迫使用vlax make variant函数。 下面是一个现有示例:
http://www.theswamp.org/index.php?topic=45643.msg508166#msg508166
Veery nice,与此相结合,可以将要预览的选择集存储在DCL中。 很好(-3.2)塔尔瓦特:哈哈:有些物体还没准备好安顿下来。。。
它起作用了。。。真是太棒了!泰!
页:
[1]
2