创建组合面域

AutoCAD ActiveX/VBA

 
创建组合面域
 
 
 

可以通过查找面域或三维实体的差集、并集或交集来创建组合面域。然后可以拉伸或旋转组合面域以创建复杂的实体。要创建组合面域,请使用 Boolean 方法。

当从某个面域减去另一个面域时,需要从第一个面域调用 Boolean 方法。这是要从中减去其他面域的的面域。例如,要计算地板需要铺多少地毯,需要从地板空间的外部边界调用 Boolean 方法,并将不需要铺地毯的区域(如柱子和柜台)作为 Boolean 参数列表中的对象。

创建组合面域

Sub Ch4_CreateCompositeRegions()
    ' 创建两个圆,一个代表房间,
    ' 另一个代表房间中的柱子
    Dim RoomObjects(0 To 1) As AcadCircle
    Dim center(0 To 2) As Double
    Dim radius As Double
    center(0) = 4
    center(1) = 4
    center(2) = 0
    radius = 2#
    Set RoomObjects(0) = ThisDrawing.ModelSpace. _
                         AddCircle(center, radius)
    radius = 1#
    Set RoomObjects(1) = ThisDrawing.ModelSpace. _
                         AddCircle(center, radius)
      
    ' 从这两个圆创建一个面域
    Dim regions As Variant
    regions = ThisDrawing.ModelSpace.AddRegion(RoomObjects)
      
    ' 将面域复制到面域变量中以便使用
    Dim RoundRoomObj As AcadRegion
    Dim PillarObj As AcadRegion
      
    If regions(0).Area > regions(1).Area Then
        ' 第一个面域是房间
        Set RoundRoomObj = regions(0)
        Set PillarObj = regions(1)
    否则
        ' 第一个面域是柱子
        Set PillarObj = regions(0)
        Set RoundRoomObj = regions(1)
    End If
' 从地板空间减去柱子空间,
    ' 以获得表示地毯总面积的面域。
    RoundRoomObj.Boolean acSubtraction, PillarObj
      
    ' 使用 Area 特性确定出地毯的总面积
    MsgBox "The carpet area is: " & RoundRoomObj.Area
End Sub

使用 Area 特性查找结果面域的面积。