52幕墙设计 发表于 2014-9-18 15:03:03

请问如何获得嵌套块内的块名

请教如何能获得嵌套块内的某个块名,或者如何得到nentsel所选择对象所在块的块名?用参照编辑先命令后选择,可以定位到嵌套块块名,都是不知道用程序如何获得块名。例如点圆块得到块1

52幕墙设计 发表于 2014-9-18 18:03:23

(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)
)

使用了参照编辑命令,退出参照编辑那一步卡顿时间很长,求直接获取嵌套块块名的方法

浪子_无限 发表于 2015-10-14 17:23:16

简单实用啊,嵌套块名提取

灰石Jeremy 发表于 2020-3-17 17:16:06

可以试试nentsel

wudechao 发表于 2020-3-21 10:11:03

楼主搞定了吗?我也被这个问题困扰。

cghdy 发表于 2020-10-19 17:29:19

52幕墙设计 发表于 2014-9-18 18:03
使用了参照编辑命令,退出参照编辑那一步卡顿时间很长,求直接获取嵌套块块名的方法

你这仅能用于一层嵌套,而且进出参照几乎是CAD最卡的操作了。请问现在有没有找到更好的办法。

llsheng_73 发表于 2020-10-19 21:34:50

(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"))))
页: [1]
查看完整版本: 请问如何获得嵌套块内的块名