Get and Set Spline Handles Example (VBA)
This example shows how to get and set the properties of spline handles
in an a 2D spline.
'-------------------------------------------------
'
' Preconditions: Part document containing a
' 2D
spline is open.
'
' Postconditions: Some of the properties of some of
' the
spline handles are modified.
'
'--------------------------------------------------
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim swSpline As SldWorks.SketchSpline
Dim swSplineHandle As Variant
Dim boolstatus As Boolean
Dim i As Long
Sub main()
Set
swApp = Application.SldWorks
Set
swModel = swApp.ActiveDoc
Set
swSelMgr = swModel.SelectionManager
Set
swModelDocExt = swModel.Extension
'
Select and get the spline
boolstatus
= swModelDocExt.SelectByID2("Spline1",
"SKETCHSEGMENT", 0.01671371527778, 0.02415763888889, 0, False,
0, Nothing, 0)
Set
swSpline = swSelMgr.GetSelectedObject6(1,
0)
'
Get the handles on the spline
swSplineHandle
= swSpline.GetSplineHandles()
'
For each handle...
For
i = 0 To UBound(swSplineHandle)
Debug.Print
"Spline Count " & swSplineHandle(i).SplinePointNumber
Debug.Print
" X : " & swSplineHandle(i).X
* 1000
Debug.Print
" Y : " & swSplineHandle(i).Y
* 1000
Debug.Print
" Z : " & swSplineHandle(i).Z
* 1000
If
(i = 0) Then
swSplineHandle(i).X = -62.33246528 / 1000 'swSplineHandle(i).X
+ 0.02
swSplineHandle(i).Y = -14.71944444 / 1000 'swSplineHandle(i).Y
+ 0.02
End
If
Debug.Print
" TangentMagnitude : " & swSplineHandle(i).TangentMagnitude(swTangentMagnitudeDirection1)
Debug.Print
" TangentRadialDirection : " & swSplineHandle(i).TangentRadialDirection
If
(i = 2) Then
swSplineHandle(i).TangentMagnitude(swTangentMagnitudeDirection1)
= (swSplineHandle(i).TangentMagnitude(swTangentMagnitudeDirection1))
+ 0.02
swSplineHandle(i).TangentRadialDirection = swSplineHandle(i).TangentRadialDirection + 0.5
End
If
Debug.Print
" Curvature : " & swSplineHandle(i).Curvature
Debug.Print
" Radius of Curvature : " & swSplineHandle(i).RadiusOfCurvature
If
(i = 3) Then
'Curvature
and radius of curvature depend on one another so test one value at time
'SplineHandle(i).Curvature = SplineHandle(i).Curvature
/ 2
swSplineHandle(i).RadiusOfCurvature = swSplineHandle(i).RadiusOfCurvature / 2
End
If
If
(i = 3) Then
Debug.Print
" TangentDriving : " & swSplineHandle(i).TangentDriving
If
(swSplineHandle(i).TangentDriving)
Then
swSplineHandle(i).TangentDriving = False
Else
swSplineHandle(i).TangentDriving = True
End
If
swSplineHandle(i).Reset
End
If
Next
End
End Sub