关于编辑 3D 实体 (VBA/ActiveX)
创建实体后,可以通过组合实体来创建更复杂的形状。 您可以连接实体、相互减去实体或求实体的公共体积(重叠部分)。使用 or 方法执行这些组合。BooleanCheckInterference ![]() 通过获得实体的 2D 横截面或将实体切成两块来进一步修改实体。使用该方法求固体的横截面,以及将实体切成两块的方法。SectionSolidSliceSolid 求出两个实体之间的干涉本示例在模型空间中创建一个方框和一个圆柱体。然后,它找到两个固体之间的干涉,并从该干涉中创建一个新的固体。为了便于查看,盒子是白色的,圆柱体是青色的,干涉固体是红色的。 Sub Ch8_FindInterferenceBetweenSolids()
' Define the box
Dim boxObj As Acad3DSolid
Dim length As Double
Dim width As Double
Dim height As Double
Dim center(0 To 2) As Double
center(0) = 5: center(1) = 5: center(2) = 0
length = 5
width = 7
height = 10
' Create the box object in model space
' and color it white
Set boxObj = ThisDrawing.ModelSpace. _
AddBox(center, length, width, height)
boxObj.Color = acWhite
' Define the cylinder
Dim cylinderObj As Acad3DSolid
Dim cylinderRadius As Double
Dim cylinderHeight As Double
center(0) = 0: center(1) = 0: center(2) = 0
cylinderRadius = 5
cylinderHeight = 20
' Create the Cylinder and
' color it cyan
Set cylinderObj = ThisDrawing.ModelSpace.AddCylinder _
(center, cylinderRadius, cylinderHeight)
cylinderObj.Color = acCyan
' Find the interference between the two solids
' and create a new solid from it. Color the
' new solid red.
Dim solidObj As Acad3DSolid
Dim bSolidsInterfere As Boolean
Set solidObj = boxObj.CheckInterference(cylinderObj, True, bSolidsInterfere)
solidObj.Color = acRed
ZoomAll
End Sub
将固体切成两个固体本示例在模型空间中创建一个框。然后,它根据由三个点定义的平面对盒子进行切片。切片以 .3DSolid Sub Ch8_SliceABox()
' Create the box object
Dim boxObj As Acad3DSolid
Dim length As Double
Dim width As Double
Dim height As Double
Dim center(0 To 2) As Double
center(0) = 5#: center(1) = 5#: center(2) = 0
length = 5#: width = 7: height = 10#
' Create the box (3DSolid) object in model space
Set boxObj = ThisDrawing.ModelSpace. _
AddBox(center, length, width, height)
boxObj.Color = acWhite
' Define the section plane with three points
Dim slicePt1(0 To 2) As Double
Dim slicePt2(0 To 2) As Double
Dim slicePt3(0 To 2) As Double
slicePt1(0) = 1.5: slicePt1(1) = 7.5: slicePt1(2) = 0
slicePt2(0) = 1.5: slicePt2(1) = 7.5: slicePt2(2) = 10
slicePt3(0) = 8.5: slicePt3(1) = 2.5: slicePt3(2) = 10
' slice the box and color the new solid red
Dim sliceObj As Acad3DSolid
Set sliceObj = boxObj.SliceSolid _
(slicePt1, slicePt2, slicePt3, True)
sliceObj.Color = acRed
ZoomAll
End Sub
|
|Archiver|CAD开发者社区
( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-10-27 18:02
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.