Una vez creado un sólido, puede proceder a la creación de formas sólidas más complejas mediante la combinación de distintos objetos sólidos. Puede optar por unir sólidos, sustraerlos o localizar su volumen común (partes superpuestas). Utilice el método Boolean o CheckInterference para efectuar dichas combinaciones.
Los sólidos se pueden modificar también mediante la obtención de la sección transversal bidimensional de un sólido o el corte de un sólido en dos partes. Utilice el método SectionSolid para buscar secciones transversales de sólidos, y el método SliceSolid para cortar un sólido en dos partes.
Búsqueda de la interferencia entre dos sólidos
En este ejemplo se crea un prisma rectangular y un cilindro en espacio modelo. A continuación, se localiza la interferencia entre los dos sólidos y se crea un sólido nuevo a partir de ella. Para facilitar la visualización, el prisma se colorea en blanco, el cilindro en cián y el sólido de interferencia en rojo.
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
Set solidObj = boxObj.CheckInterference(cylinderObj, True)
solidObj.Color = acRed
ZoomAll
End Sub
Corte de un sólido en dos sólidos
En este ejemplo se crea un prisma rectangular en espacio modelo. Después se corta tomando como referencia un plano definido por tres puntos. La sección se devuelve como sólido 3D.
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