动态块Ent的实名
你好要获取选定块实体的块名称,我使用:
(setq Name (cdr (assoc 2 Ent)) )
它可以很好地工作,但不适用于动态块。若我试着用它来获得动态块的名称,我会得到一些奇怪的名称,比如*U126,*U123。
如何获得这些块的真实定义名称? “*U”块名有效。它们表明该区块是匿名的。您可以像查找任何其他块一样查找块表定义(tblsearch“BLOCK”*U123)
不能假设每次打开图形时名称都是相同的。这些名字因许多其他事情而改变-大卫 如果我知道*U的名字,我怎么能得到这个块定义的名字?
就像我定义动态块“门”。然后创建这个doors的实体,名称为“*U123”,我怎么知道“*U123”来自“doors”? 请尝试:
(defun c:dynname (/ ed)
(prompt "\n....Select a Block...:")
(and
(assoc 360
(setq ed
(entget
(ssname
(ssget "_:E:S" '((0 . "INSERT")))0)))) ;_ {setq
(repeat 3
(setq ed
(entget (cdr (assoc 360 ed)))
) ;_ {setq
) ;_ {repeat
(setq ed (entget (cdr (assoc 340 ed))))
) ;_ {and
(setq ed (cdr (assoc 2 ed)))
) ;_ {defun 是的,它工作得很好!!!谢谢 威兹曼,你是个天才
李,谢谢,但我还在学习…-) 或
(vla-get-EffectiveName
(vlax-ename->vla-object
(car(entsel "\nSelect block: "))))
请勿foget(vl load com)。 哈哈^^^简单多了
页:
[1]