'Define cylinder Dim dblCylData(7) As Double dblCylData(0) = 0 dblCylData(1) = 0 dblCylData(2) = 0 dblCylData(3) = 1 dblCylData(4) = 0 dblCylData(5) = 0 dblCylData(6) = 0.005 'radius dblCylData(7) = 0.01 'extrude length 'Create cylindrical temporary body Dim swCylBody As SldWorks.Body2 Set swCylBody = swModeler.CreateBodyFromCyl(dblCylData) 'Check body for faults Call CheckBody(swCylBody) Sub CheckBody(body As SldWorks.Body2) Dim swFaultEnt As SldWorks.FaultEntity Dim i As Integer Set swFaultEnt = body.Check3 If swFaultEnt.Count <> 0 Then Debug.Print "Faults detected." For i = 0 To swFaultEnt.Count - 1 Debug.Print "Error code: " & swFaultEnt.ErrorCode(i) Next i Debug.Print "Ending." End End If End Sub 'Display body swCylBody.Display3 swModel, RGB(255, 0, 0), swTempBodySelectOptionNone 'Repeat steps for conical temporary body Dim dblConeData(8) As Double dblConeData(0) = dblCylData(7) dblConeData(1) = 0 dblConeData(2) = 0 dblConeData(3) = 1 dblConeData(4) = 0 dblConeData(5) = 0 dblConeData(6) = dblCylData(6) 'base radius dblConeData(7) = 0 'top radius dblConeData(8) = 0.01 'extrude length Dim swConeBody As SldWorks.Body2 Set swConeBody = swModeler.CreateBodyFromCone(dblConeData) Call CheckBody(swConeBody) swConeBody.Display3 swModel, RGB(255, 0, 0), swTempBodySelectOptionNone 'Add bodies Dim vBodies As Variant Dim lngErrors As Long vBodies = swConeBody.Operations2(SWBODYADD, swCylBody, lngErrors) If lngErrors <> 0 Then Debug.Print "Boolean operation error: " & lngErrors & vbCrLf & "Ending." End End If 'Turn into feature Dim swPart As SldWorks.PartDoc Set swPart = swModel swPart.CreateFeatureFromBody3 vBodies(0), False, 0