Explodes the compound object into subentities.
Supported platforms: Windows only
VBA:
RetVal = object.Explode
Type: 3DPolyline , BlockReference, ExternalReference, LWPolyline, MInsertBlock, PolygonMesh, Polyline, Region
The object this method applies to.
Type: Variant (array of objects)
The array of exploded objects.
Depending on the type of compound object you are exploding, different results occur. Refer to the EXPLODE command topic in the AutoCAD Command Reference for a detailed list of explodable objects and their results.
You do not have to explode a block in order to manipulate its constituent entities. All block definitions have an Item method that allow you to manipulate the entities within the block without exploding the block definition itself.
VBA:
Sub Example_Explode() ' This example creates a lightweight polyline in model space. ' It then explodes the polyline. Dim plineObj As AcadLWPolyline Dim points(0 To 11) As Double ' Define the 2D polyline points points(0) = 1: points(1) = 1 points(2) = 1: points(3) = 2 points(4) = 2: points(5) = 2 points(6) = 3: points(7) = 2 points(8) = 4: points(9) = 4 points(10) = 4: points(11) = 1 ' Create a lightweight Polyline object in model space Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points) ' Set the bulge on one segment to vary the ' type of objects in the polyline plineObj.SetBulge 3, -0.5 ZoomAll ' Explode the polyline MsgBox "Explode the polyline?", , "Explode Example" Dim explodedObjects As Variant explodedObjects = plineObj.Explode ' Loop through the exploded objects Dim I As Integer For I = 0 To UBound(explodedObjects) explodedObjects(I).Update MsgBox "Exploded Object " & I & ": " & explodedObjects(I).ObjectName, , "Explode Example" explodedObjects(I).Color = acByLayer explodedObjects(I).Update Next End Sub
Visual LISP:
(vl-load-com) (defun c:Example_Explode() ;; This example creates a lightweight polyline in model space. ;; It then explodes the polyline. (setq acadObj (vlax-get-acad-object)) (setq doc (vla-get-ActiveDocument acadObj)) ;; Define the 2D polyline points (setq points (vlax-make-safearray vlax-vbDouble '(0 . 11))) (vlax-safearray-fill points '(1 1 1 2 2 2 3 2 4 4 4 1 ) ) ;; Create a lightweight Polyline object in model space (setq modelSpace (vla-get-ModelSpace doc)) (setq plineObj (vla-AddLightWeightPolyline modelSpace points)) (vla-put-Color plineObj acRed) ;; Set the bulge on one segment to vary the ;; type of objects in the polyline (vla-SetBulge plineObj 3 -0.5) (vla-ZoomAll acadObj) ;; Explode the polyline (alert "Explode the polyline?") (setq explodedObjects (vlax-variant-value (vla-Explode plineObj))) ;; Loop through the exploded objects (setq I 0) (while (>= (vlax-safearray-get-u-bound explodedObjects 1) I) (vla-Update (vlax-safearray-get-element explodedObjects I)) (alert (strcat "Exploded Object " (itoa I) ": " (vla-get-ObjectName (vlax-safearray-get-element explodedObjects I)))) (vla-put-Color (vlax-safearray-get-element explodedObjects I) acByLayer) (vla-Update (vlax-safearray-get-element explodedObjects I)) (setq I (1+ I)) ) )