clh521 发表于 2013-12-11 13:45:17

请问如何判断一个块是否是带有嵌套的块?

请问如何判断一个块是否是带有嵌套的块?

llsheng_73 发表于 2013-12-15 00:32:25

对于块没怎么研究过,不过应该可以通过entnext一个个的看它的0组是不是INSERT直到 seqend结束

ZZXXQQ 发表于 2013-12-15 18:28:47

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

clh521 发表于 2013-12-16 09:09:11

ZZXXQQ 发表于 2013-12-15 18:28 static/image/common/back.gif


谢谢ZZXXQQ ,但我用(ISBLOCK (entsel))试了下好像结果不对,不管是有嵌套的块,还是没嵌套的块,得到的结果都是nil

Gu_xl 发表于 2013-12-16 09:34:18

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

clh521 发表于 2013-12-16 10:09:23

Gu_xl 发表于 2013-12-16 09:34 static/image/common/back.gif


谢谢Gu-xl,试了下结果很给力啊,终于得到解决了!
页: [1]
查看完整版本: 请问如何判断一个块是否是带有嵌套的块?