分解对象将对象从单一对象转换为构成该对象的组件,但是不会有视觉上的影响。例如,分解可以将三维多边形、多段线、多边形网格和面域变成简单的直线和圆弧,将块参照替换为组成块的简单对象的副本。
有关分解对象的详细信息,请参见《用户手册》中的“解除复合对象的关联(分解)”。
本例创建一个优化多段线对象,然后将多段线分解成多个对象。接着遍历产生的对象,显示含有每个对象名称的消息框,并显示分解对象在列表中的索引。
Sub Ch4_ExplodePolyline()
Dim plineObj As AcadLWPolyline
Dim points(0 To 11) As Double
' 定义二维多段线的点
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
' 创建优化多段线对象
Set plineObj = ThisDrawing.ModelSpace. _
AddLightWeightPolyline(points)
' 在某个线段上设置凸度以改变
' 多段线中的对象类型
plineObj.SetBulge 3, -0.5
plineObj.Update
' 分解多段线
Dim explodedObjects As Variant
explodedObjects = plineObj.Explode
' 遍历分解的对象
' 并以消息框来显示
' 每个对象的类型
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