获取块属性
朋友们好。。我有一个问题,获得一些属性的块。。。我试着用这两种方式
(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服务器返回错误:未知名称:”
关于如何获取块特性的任何建议 你好
你想要实现什么?
块参照没有特性计数。
使用vlax Dump对象转储块以查看所有可用的属性和方法? 如果要计算图形文件中的块数,我认为您不会通过计数方法访问它。如果我没记错的话,这只是计算一个块实例中有多少项。 您无法通过引用实体(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..."))))))
这可能是你想要的
(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
谢谢大家的回答。。。我试着做的是一个部分分解块的例程。。。有时你一定会想把一行或一段文字去掉,但什么都不做
在块中的其他部分,所以我有一个想法,让它以一种方式,你选择块,而不是用“nantsel”你选择你想分解的块的一部分,而不是用某种迭代函数(这就是为什么我需要块中项目的数量),我会从块中获取所有对象,删除那些我想分解的,并在没有它们的情况下生成相同的块。。。看起来容易还是?
Marko写的东西给了我一个区块中的项目数,所以我将从那里开始。。。我想说的是,我可能永远也不知道如何编写这行代码,但我仍然没有完全理解
如果你对我正在制作的Lisp程序有一些想法,或者已经有这种Lisp程序了,我很高兴听到你的建议。。。
简单来说:
4
您可能还会发现此程序对您的任务很有用。 李,你让它看起来很简单,代码就是解决方案。。。。THANX公司
现在我将花一些时间来处理这段代码,以更好地理解它的机制。。。以前从未使用过矩阵。。。
您通过链接提交的另一个lisp也是一个值得学习的好例子。。。
流畅、优雅、辉煌。。。。艺术:-) 谢谢你们俩
页:
[1]