完全炸开图块

codebegin@

(progn

(defun SINGLE_SEL(enttype message loop / *error* ent inf)

(defun *error* (msg) (princ))
(while (if (setq ent (car (entsel (strcat "\n请选择" message ":"))))
(progn
(setq inf (strcat "\n所选对象不是" message ",请重新选择。"))
(not (wcmatch (cdr (assoc 0 (entget ent))) enttype))
)
(if loop (progn (setq inf "\n未选择对象,请重新选择。") loop) loop)
)
(princ inf)
)
(if ent ent)
)

(defun c:xx( / AcadObject AcadDocument blocks ent obj blk_name loop1)
(VL-LOAD-COM)
(setq AcadObject (vlax-get-acad-object)
AcadDocument (vla-get-ActiveDocument AcadObject)
blocks (vla-get-blocks Acaddocument)
)

(while (setq ent (SINGLE_SEL "INSERT" "图块" nil))
(setq obj (vlax-ename->vla-object ent))
(setq blk_name (vla-get-effectivename obj))
(while
(progn
(setq loop1 nil)
(vlax-for item (vlax-invoke-method blocks 'Item blk_name)
(if (= (vla-get-objectname item) "AcDbBlockReference")
(progn
(setq sss item)
(if (vlax-invoke-method item 'Explode)
(progn
(vla-explode item)
(vla-delete item)
(setq loop1 t)
)
)
)
)
)
(vla-update obj)
(if loop1 t nil)
)
)
(princ "\n已分解图块内所有块对象")
)
(princ)
))

@codeend

posted @ 2022-08-01 09:41  -JIN-  阅读(68)  评论(0)    收藏  举报