SolidWorks
Get BCurve Spline Points Example (VBA)
This example shows how to get B-spline parameter data (knots, control
points, etc.) for a selected spline
or curve.
'---------------------------------------------------------------------------
' Preconditions:
' 1. Open a part document that contains a sketch with a spline curve
' (e.g., <SolidWorks_install_dir>\samples\tutorial\molds\telephone.sldprt).
' 2. Select a curve in the graphics area.
' 3. Open an Immediate Window.
'
' Postconditions:
' View the following information about the selected spline
' in the
Immediate Window:
' * dimension
' 1-D: X
' 2-D: X, Y
' 3-D: X, Y, Z
' 4-D: X, Y, Z, W (where W is the weight of the control point)
' * order (degree + 1)
' * number of control points
' * periodicity
' * number of knots:
' if periodicity = 1,
' number of control points + 1
' else
' number of control points + order
' * spline style: color, layer, layer override, line
style, line weight
'----------------------------------------------------------------------------
Option Explicit
Sub main()
Dim swApp As SldWorks.SldWorks
Dim Part As SldWorks.ModelDoc2
Set swApp =
CreateObject("SldWorks.Application")
Set Part = swApp.ActiveDoc
Dim swSelectMgr As SldWorks.SelectionMgr
Set swSelectMgr = Part.SelectionManager
Dim swSketchSeg As SldWorks.Edge
Set swSketchSeg = swSelectMgr.GetSelectedObject6(1, -1)
Dim swCurveIn As SldWorks.Curve
Dim swSplineParaData As SldWorks.SplineParamData
Dim boolStatus As Boolean
Dim i As Long
Set swCurveIn = swSketchSeg.GetCurve
Debug.Print ""
Debug.Print "B-spline"
Debug.Print ""
Set swSplineParaData = swCurveIn.GetBCurveParams5(False,
False, True, True)
Debug.Print "The dimension is: " & swSplineParaData.Dimension
Debug.Print "The order is: " & swSplineParaData.Order
Debug.Print "The periodicity is: " & swSplineParaData.Periodic
Debug.Print "The control point count is: " &
swSplineParaData.ControlPointsCount
Debug.Print "The knot point count is: " &
swSplineParaData.KnotPointsCount
Debug.Print "COLORREF of spline: " &
swSplineParaData.Color
Debug.Print "Layer of spline: " & swSplineParaData.Layer
Debug.Print "Style overrides as defined in swLayerOverride_e:
" & swSplineParaData.LayerOverride
Debug.Print "Line style as defined in swLineStyles_e:: " &
swSplineParaData.LineStyle
Debug.Print "Line weight at defined in swLineWeights_e: " &
swSplineParaData.LineWidth
End Sub