概要 - オブジェクトを分解する(VBA/ActiveX)

オブジェクトを分解すると、オブジェクトは単一オブジェクトからその構成要素に変換されますが、視覚的には変化ありません。

分解すると、たとえば 3D ポリゴン、ポリライン、ポリメッシュおよびリージョンから、単純な線分や円弧が形成されます。ブロック参照は、ブロックを構成する単純なオブジェクトの複写に置き換えられます。

ポリラインを分解する

次の例は、最適化ポリライン オブジェクトを作成します。次に、そのポリラインを個別のオブジェクトに分解します。最後に、結果として得られたオブジェクトを走査して各オブジェクトの名前、および分解されたオブジェクトのリスト内でのインデックスを示すメッセージ ボックスを表示します。

Sub Ch4_ExplodePolyline()
  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 light weight Polyline object
  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
  plineObj.Update

  ' Explode the polyline
  Dim explodedObjects As Variant
  explodedObjects = plineObj.Explode

  ' Loop through the exploded objects
  ' and display a message box with
  ' the type of each object
  Dim I As Integer
  For I = 0 To UBound(explodedObjects)
    explodedObjects(I).Update
    MsgBox "Exploded Object " & I & ": " & explodedObjects(I).ObjectName
    explodedObjects(I).Update
  Next
End Sub