请问如何获得嵌套块内的块名
请教如何能获得嵌套块内的某个块名,或者如何得到nentsel所选择对象所在块的块名?用参照编辑先命令后选择,可以定位到嵌套块块名,都是不知道用程序如何获得块名。例如点圆块得到块1(defun c:test ( / e obj blkName)
(while T
(while (/=(type(setq e (car(last(nentsel "\nSelect any BLOCK to edit: "))))) 'ENAME))
(setq obj (vlax-ename->vla-object e))
(if(= (vlax-get-property obj 'ObjectName) "AcDbBlockReference")
(setq blkName (vlax-get-property obj
(if (vlax-property-available-p obj 'effectivename)'effectivename 'name))
);setq
);if
(princ (strcat "\nBlock Name is: " BlkName))
);while
);defun (defun tt(blkname / blks a b)
(if(=(type(setq a(VL-CATCH-ALL-APPLY'vla-item(list(vlax-get-property(vlax-get-property(vlax-get-acad-object)'activedocument)'blocks)blkname))))'VLA-OBJECT)
(progn(vlax-for x a(if(=(vlax-get-property x 'ObjectName)"AcDbBlockReference")(setq b(cons(vlax-get-property x'name)b))))
(if b(List blkname(mapcar 'tt b))blkname))))
;;(TT"B1")
;;("B1" (("E" ("D")) ("B" ("A")))) 52幕墙设计 发表于 2014-9-18 18:03
使用了参照编辑命令,退出参照编辑那一步卡顿时间很长,求直接获取嵌套块块名的方法
你这仅能用于一层嵌套,而且进出参照几乎是CAD最卡的操作了。请问现在有没有找到更好的办法。 (defun c:tt()
(setq p0(cadr(entsel)))
(command"-refedit" p0 "n" "o" "a" "n")
(setq n(getvar"REFEDITNAME"))
(command"_refclose" "D")
(command"_leader"p0 pause pause"" n "")
(princ n)
)
使用了参照编辑命令,退出参照编辑那一步卡顿时间很长,求直接获取嵌套块块名的方法
简单实用啊,嵌套块名提取 可以试试nentsel 楼主搞定了吗?我也被这个问题困扰。 llsheng_73 发表于 2020-10-19 21:34
;;(TT"B1")
;;("B1" (("E" ("D")) ("B" ("A"))))
我加载的话显示语法错误,是什么原因呢,蠢小白,轻拍:Q- 52幕墙设计 发表于 2014-9-18 18:03
使用了参照编辑命令,退出参照编辑那一步卡顿时间很长,求直接获取嵌套块块名的方法
最后有解决方案了吗?楼主 获取嵌套的块名用来做什么呢?哪怕知道块A包含块BCDEF,也不清楚块BCDEF各自对应哪些图形。然后呢?拿着块BCDEF名字要做什么?
页:
[1]
2