Based on the 'combobursttest.dwg' posted previously....
This will EXPLODE all instances of your Dynamic Block ("RECEP_DATA_DEMO_COMBO"):
Code:
(vl-load-com)
(defun c:ComboBreak (/ *error* _GetDynamicBlocks acDoc blocks)
(defun *error* (msg)
(if acDoc
(vla-endundomark acDoc)
)
(cond ((not msg)) ; Normal exit
((member msg '("Function cancelled" "quit / exit abort"))) ; <esc> or (quit)
((princ (strcat "\n** Error: " msg " ** "))) ; Fatal error, display it
)
(princ)
)
(defun _GetDynamicBlocks (doc match / oBlocks blockName blocks)
;; Example:
;; (_GetDynamicBlocks acDoc "*MyBlockName*")
(if (and (setq oBlocks (vla-get-blocks doc))
(setq match (strcase match))
)
(foreach space
(list (vla-get-modelspace doc) (vla-get-paperspace doc))
(vlax-for x space
(if
(and
(= "AcDbBlockReference" (vla-get-objectname x))
(wcmatch
(strcase (setq blockName (vla-get-effectivename x))
)
match
)
(= :vlax-true
(vla-get-isdynamicblock
(vla-item oBlocks blockName)
)
)
)
(setq blocks (cons x blocks))
)
)
)
)
blocks
)
(if (setq blocks
(_GetDynamicBlocks
(setq acDoc (vla-get-activedocument (vlax-get-acad-object))
)
(strcase "RECEP_DATA_DEMO_COMBO")
)
)
(progn
(vla-startundomark acDoc)
(foreach block blocks
(vla-explode block)
(vla-delete block)
)
)
)
(*error* nil)
)
This will first EXPLODE all instances of your Dynamic Block ("RECEP_DATA_DEMO_COMBO"), and then BURST the resultant Dynamic Blocks ("RECEPTACAL-WALL", "DATA"):
Code:
(vl-load-com)
(defun c:ExplodeThenBurst (/ *error* _GetDynamicBlocks acDoc blocks ss)
(defun *error* (msg)
(if acDoc
(vla-endundomark acDoc)
)
(cond ((not msg)) ; Normal exit
((member msg '("Function cancelled" "quit / exit abort"))) ; <esc> or (quit)
((princ (strcat "\n** Error: " msg " ** "))) ; Fatal error, display it
)
(princ)
)
(defun _GetDynamicBlocks (doc match / oBlocks blockName blocks)
;; Example:
;; (_GetDynamicBlocks acDoc "*MyBlockName*")
(if (and (setq oBlocks (vla-get-blocks doc))
(setq match (strcase match))
)
(foreach space
(list (vla-get-modelspace doc) (vla-get-paperspace doc))
(vlax-for x space
(if
(and
(= "AcDbBlockReference" (vla-get-objectname x))
(wcmatch
(strcase (setq blockName (vla-get-effectivename x))
)
match
)
(= :vlax-true
(vla-get-isdynamicblock
(vla-item oBlocks blockName)
)
)
)
(setq blocks (cons x blocks))
)
)
)
)
blocks
)
(if (setq blocks
(_GetDynamicBlocks
(setq acDoc (vla-get-activedocument (vlax-get-acad-object))
)
(strcase "RECEP_DATA_DEMO_COMBO")
)
)
(progn
(vla-startundomark acDoc)
(setq ss (ssadd))
(foreach block blocks
(foreach obj (vlax-invoke block 'explode)
(setq ss (ssadd (vlax-vla-object->ename obj) ss))
)
(vla-delete block)
)
(sssetfirst nil ss)
(c:burst)
)
)
(*error* nil)
)
** Code assumes that BURST Express Tool is loaded.