eimimitu 发表于 2022-7-5 15:35:28

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!!!!????

 
你的想法?。。。。。。。。。。。。

BIGAL 发表于 2022-7-5 15:44:36

一个答案首先去谷歌https://www.cad-notes.com/how-to-add-objects-in-your-drawing-into-an-autocad-block/

eimimitu 发表于 2022-7-5 15:49:22

我跟踪了你的链接BIGAL。。。一直到李·麦克的“AddObjectstoBlock”Lisp程序。。。。我在他的例程中看到了类似的语法:
 
(vla CopyObjects(ActiveDoc变量)(要添加的对象列表)(块参照名称))
 
我还是不明白为什么我的不能用。。。我在想,可能是实体变量或块引用变量的形式不正确。。。也许我无法添加从“vlax ename->vla object x”获得的单个实体。。。可能它需要一个选择集数组。。。也许它在添加对象之前需要一些其他信息。。。。我不知道。。。

Tharwat 发表于 2022-7-5 15:54:00

你好
 
为了避免安全数组,只需使用vlax调用,此外还需要将vla对象作为列表。
 
(vlax-invoke doc 'CopyObjects (list fax) fab)

eimimitu 发表于 2022-7-5 15:59:43

哦!哇!我花了一整天的时间旋转轮子。。谢谢Tharwat。。。我会试试看,然后回来汇报。。。。
 
有趣的是,我也尝试过这种方法,但没有列出。。相同零。。
 
所以我想说清楚。。。第一种方法确实需要一个安全的对象数组?安全阵列也可以包含单个对象吗?仅供将来参考。。。
 
谢谢你们!

Tharwat 发表于 2022-7-5 16:04:15

不客气。
 
当然,请查看以下内容,以供您参考,其中包含单个对象(而不是已婚对象)。

(setq safe (vlax-make-safearray vlax-vbObject '(0 . 0)))
(vlax-safearray-put-element safe 0 fax)

(vla-CopyObjects doc safe fab)

Grrr 发表于 2022-7-5 16:08:35

我总是忘记这些方法有时需要安全数组。。。
让我想,在任何地方都需要变量类型的参数吗?因此,人们将被迫使用vlax make variant函数。

Lee Mac 发表于 2022-7-5 16:17:36

下面是一个现有示例:
http://www.theswamp.org/index.php?topic=45643.msg508166#msg508166

Grrr 发表于 2022-7-5 16:24:05

 
Veery nice,与此相结合,可以将要预览的选择集存储在DCL中。

eimimitu 发表于 2022-7-5 16:25:00

很好(-3.2)塔尔瓦特:哈哈:有些物体还没准备好安顿下来。。。
 
它起作用了。。。真是太棒了!泰!
页: [1] 2
查看完整版本: VLA创建块定义an