Get Guide Curves in Sweep Feature Example (VBA)
This example shows how to get the guide curves in a sweep feature.
'----------------------------------------
' Preconditions:
' 1. Verify that the specified part document
' template exists.
' 2. Open the Immediate window.
'
' Postconditions:
' 1. Creates a new part document.
' 2. Creates a sweep feature.
' 3. Prints to the Immediate window the
' number of guide curves in the sweep
' feature.
' 4. Accesses the guide curves in the sweep feature.
' 5. Prints to the Immediate window the feature types
' of the guide curves.
' 6. Releases access to the sweep feature.
' 7. Examine the Immediate window.
'----------------------------------------
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim swSketchMgr As SldWorks.SketchManager
Dim swSketchSegment As SldWorks.SketchSegment
Dim swFeature As SldWorks.Feature
Dim swFeatureMgr As SldWorks.FeatureManager
Dim swSweepFeatureData As SldWorks.SweepFeatureData
Dim pointArray As Variant
Dim points() As Double
Dim guideCurves As Variant
Dim guideCurve As Object
Dim nbrGuideCurves As Long
Dim status As Boolean
Dim i As Long
Sub main()
Set swApp = Application.SldWorks
'Create new model document
Set swModel = swApp.NewDocument("C:\ProgramData\SolidWorks\SolidWorks 2015\templates\Part.prtdot", 0, 0, 0)
Set swModelDocExt = swModel.Extension
'Sketch an ellipse for sweep profile
swModel.ClearSelection2 True
Set swSketchMgr = swModel.SketchManager
status = swModelDocExt.SelectByID2("Top Plane", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
swSketchMgr.InsertSketch True
Set swSketchSegment = swSketchMgr.CreateEllipse(0, 0, 0, -0.064925207354862, 0, 0, 0, -3.60377802938881E-02, 0)
swModel.ClearSelection2 True
swSketchMgr.InsertSketch True
'Sketch a line for sweep path
status = swModelDocExt.SelectByID2("Front Plane", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
swSketchMgr.InsertSketch True
Set swSketchSegment = swSketchMgr.CreateLine(0#, 0#, 0#, 0#, 0.059816, 0#)
swModel.ClearSelection2 True
swSketchMgr.InsertSketch True
'Sketch a spline for sweep guide curve
status = swModelDocExt.SelectByID2("Front Plane", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
swSketchMgr.InsertSketch True
ReDim points(0 To 5) As Double
points(0) = -0.064925207354862
points(1) = 0
points(2) = 0
points(3) = -5.76005360247873E-03
points(4) = 5.95205538922803E-02
points(5) = 0
pointArray = points
Set swSketchSegment = swSketchMgr.CreateSpline((pointArray))
swModel.ClearSelection2 True
status = swModelDocExt.SelectByID2("Unknown", "MANIPULATOR", -4.81685228359519E-02, 1.68573405240843E-02, 0, False, 0, Nothing, 0)
swModel.ClearSelection2 True
swSketchMgr.InsertSketch True
swModel.ViewZoomtofit2
'Select the profile, path, and guide curve
status = swModelDocExt.SelectByID2("Sketch1", "SKETCH", 0, 0, 0, True, 0, Nothing, 0)
status = swModelDocExt.SelectByID2("Sketch2", "SKETCH", 0, 0, 0, True, 0, Nothing, 0)
status = swModelDocExt.SelectByID2("Sketch3", "SKETCH", 0, 0, 0, True, 0, Nothing, 0)
swModel.ClearSelection2 True
status = swModelDocExt.SelectByID2("Sketch1", "SKETCH", 0, 0, 0, False, 1, Nothing, 0)
status = swModelDocExt.SelectByID2("Sketch2", "SKETCH", 0, 0, 0, True, 4, Nothing, 0)
status = swModelDocExt.SelectByID2("Sketch3", "SKETCH", 0, 0, 0, True, 2, Nothing, 0)
'Create the sweep feature
Set swFeatureMgr = swModel.FeatureManager
Set swFeature = swFeatureMgr.InsertProtrusionSwept3(False, False, swTwistControlType_e.swTwistControlFollowPath, False, False, swTangencyType_e.swTangencyNone, swTangencyType_e.swTangencyNone, False, 0, 0, swThinWallType_e.swThinWallOneDirection, 0, True, True, True, 0, True)
Debug.Print "Feature type: " & swFeature.GetTypeName2
'Change the orientation of the view
swModel.ShowNamedView2 "*Isometric", 7
'Access sweep feature data, get guide curves,
'get feature type of guide curves, and release
'access to sweep feature
Set swSweepFeatureData = swFeature.GetDefinition
nbrGuideCurves = swSweepFeatureData.GetGuideCurvesCount
Debug.Print (" Number of guide curves: " & nbrGuideCurves)
status = swSweepFeatureData.AccessSelections(swModel, Nothing)
Debug.Print (" Guide curve: ")
guideCurves = swSweepFeatureData.guideCurves
For i = 0 To (nbrGuideCurves - 1)
Set guideCurve = guideCurves(i)
Debug.Print (" Type of feature: " & swSweepFeatureData.GetGuideCurvesType(i))
Next i
swSweepFeatureData.ReleaseSelectionAccess
End Sub