Files
Lesson 7.3 - create spike
Code
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swModeler As SldWorks.Modeler
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swModeler = swApp.GetModeler
'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)
'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
End Sub
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