请问如何判断一个块是否是带有嵌套的块?
请问如何判断一个块是否是带有嵌套的块?对于块没怎么研究过,不过应该可以通过entnext一个个的看它的0组是不是INSERT直到 seqend结束 (defun isblock (en / ss ent)
(setvar "CMDECHO" 0)
(command ".UNDO" "BE")
(if (and (= (type en) 'ENAME)
(setq ent (entget en))
(= (cdr(assoc 0 ent) "INSERT"))
(command ".EXPLODE" en)
(setq ss (ssget "P" '((0 . "INSERT")))) (progn
(command ".UNDO" "E")
(command "_U")
))
(setvar "CMDECHO" 1)
(and ss (> (sslength ss) 0))
) ZZXXQQ 发表于 2013-12-15 18:28 static/image/common/back.gif
谢谢ZZXXQQ ,但我用(ISBLOCK (entsel))试了下好像结果不对,不管是有嵌套的块,还是没嵌套的块,得到的结果都是nil (defun c:tt (/ e flag name)
(if (and
(setq e (car (entsel)))
(= "INSERT" (cdr (assoc 0 (setq e (entget e)))))
)
(progn
(vlax-for obj (vla-item
(vla-get-blocks
(vla-get-ActiveDocument (vlax-get-acad-object))
)
(cdr (assoc 2 e))
)
(if (or (= "AcDbBlockReference"
(setq name (vla-get-ObjectName obj))
)
(= "AcDbMInsertBlock" name)
)
(setq Flag t)
)
)
(if flag
(princ "\n嵌套块!")
(princ "\n非嵌套块!")
)
)
)
(princ)
) Gu_xl 发表于 2013-12-16 09:34 static/image/common/back.gif
谢谢Gu-xl,试了下结果很给力啊,终于得到解决了!
页:
[1]