Tomislav 发表于 2022-7-5 17:59:28

获取块属性

朋友们好。。
我有一个问题,获得一些属性的块。。。我试着用这两种方式
 

(setq blok(car(entsel "\nSelect block...")))
(setq blok_vla(vlax-ename->vla-object blok))
;1
(setq item_num (vlax-get-property blok_vla 'Count))
...
;2
(setq item_num (vla-get-Count blok_vla))

 
但我总是得到“ActiveX服务器返回错误:未知名称:”
关于如何获取块特性的任何建议

Tharwat 发表于 2022-7-5 18:08:01

你好
你想要实现什么?
 
块参照没有特性计数。
 
使用vlax Dump对象转储块以查看所有可用的属性和方法?

ksperopoulos 发表于 2022-7-5 18:17:06

如果要计算图形文件中的块数,我认为您不会通过计数方法访问它。如果我没记错的话,这只是计算一个块实例中有多少项。

marko_ribar 发表于 2022-7-5 18:24:20

您无法通过引用实体(VLA-OBJECT)实现计数。。。相反,对定义实体(VLA-OBJECT)使用计数方法。。。
要获得定义,请尝试:
然后尝试计数方法。。。
 
[编辑:我错了,你应该检查块定义集合VLA-OBJECT…]
 

(vla-get-count (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) (vla-get-effectivename (vlax-ename->vla-object (car (entsel "\nPick block reference..."))))))

BIGAL 发表于 2022-7-5 18:31:49

这可能是你想要的
 

(setqdoc (vla-get-activedocument (vlax-get-acad-object))) ; open database
(setq x 0)
(vlax-for block (vla-get-blocks doc)
(if (not (wcmatch (strcase (vla-get-name block) t) "*_space*"))
(vlax-for*ent block
(setq x (+ x 1))
) ;_ end of vlax-for
) ;_ end of if
(princ (strcat "\nThere are " (rtos x 2 0) "objects in block " (vla-get-name block)))
) ; end of vlax-for

Tomislav 发表于 2022-7-5 18:33:41

谢谢大家的回答。。。我试着做的是一个部分分解块的例程。。。有时你一定会想把一行或一段文字去掉,但什么都不做
在块中的其他部分,所以我有一个想法,让它以一种方式,你选择块,而不是用“nantsel”你选择你想分解的块的一部分,而不是用某种迭代函数(这就是为什么我需要块中项目的数量),我会从块中获取所有对象,删除那些我想分解的,并在没有它们的情况下生成相同的块。。。看起来容易还是?
Marko写的东西给了我一个区块中的项目数,所以我将从那里开始。。。我想说的是,我可能永远也不知道如何编写这行代码,但我仍然没有完全理解
如果你对我正在制作的Lisp程序有一些想法,或者已经有这种Lisp程序了,我很高兴听到你的建议。。。

Lee Mac 发表于 2022-7-5 18:40:27

 
简单来说:
4
您可能还会发现此程序对您的任务很有用。

Tomislav 发表于 2022-7-5 18:51:56

李,你让它看起来很简单,代码就是解决方案。。。。THANX公司
现在我将花一些时间来处理这段代码,以更好地理解它的机制。。。以前从未使用过矩阵。。。
您通过链接提交的另一个lisp也是一个值得学习的好例子。。。

rlx 发表于 2022-7-5 18:58:34

 
 
流畅、优雅、辉煌。。。。艺术:-)

Lee Mac 发表于 2022-7-5 19:01:12

谢谢你们俩
页: [1]
查看完整版本: 获取块属性