Explode Method (ActiveX)

Explodes the compound object into subentities.

Supported platforms: Windows only

Signature

VBA:

RetVal = object.Explode
object

Type: 3DPolyline , BlockReference, ExternalReference, LWPolyline, MInsertBlock, PolygonMesh, Polyline, Region

The object this method applies to.

Return Value (RetVal)

Type: Variant (array of objects)

The array of exploded objects.

Remarks

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.

Examples

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