Explode メソッド(ActiveX)

複合オブジェクトを従属図形に分解します。

サポートされているプラットフォーム: Windows のみ

構文と要素

VBA:

RetVal = object.Explode
object

タイプ: 3DPolyline BlockReferenceExternalReferenceLWPolylineMInsertBlockPolygonMeshPolylineRegion

このメソッドが適用されるオブジェクト。

戻り値(RetVal)

タイプ: バリアント型(オブジェクトの配列)

分解されたオブジェクトの配列。

注意

分解する複合オブジェクトのタイプによって、生成される結果が異なります。分解可能なオブジェクトとその結果の詳細な一覧は、『AutoCAD コマンド リファレンス』の「EXPLODE[分解]コマンド」トピックを参照してください。

ブロックの構成図形を操作するためにそのブロックを分解する必要はありません。すべてのブロック定義には、ブロック定義自体を分解することなくブロック内部の図形を操作することができる Item メソッドが含まれています。

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