Get P-Spline Parameterization Data Example (VBA)
This example shows how to get P-spline parameter data for a selected
spline or curve.
'----------------------------------------------------------------------------
' Preconditions:
' 1. Open <SolidWorks_install_dir>\samples\tutorial\molds\telephone.sldprt.
' 2. Select a curved edge of Shell1 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)
' * periodicity
' * number of knots
' * number of segments
' * coefficients in each segment polynomial
' # coefficients =
(segment count) X (dimension) X (count)
' * 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 varCtrlPoints As Variant
Dim varKnotPoints As Variant
Dim boolStatus As Boolean
Dim i As Long
Set swCurveIn = swSketchSeg.GetCurve
Set swSplineParaData = swCurveIn.GetPCurveParams2
Debug.Print "P-spline"
Debug.Print ""
Debug.Print "The dimension is: " & swSplineParaData.Dimension
Debug.Print "The order is: " & swSplineParaData.Order
Debug.Print "The periodicity is: " & swSplineParaData.Periodic
Debug.Print "The knot count is: " & swSplineParaData.KnotPointsCount
Debug.Print "Knots: "
boolStatus = swSplineParaData.GetKnotPoints(varKnotPoints)
For i = 0 To UBound(varKnotPoints)
Debug.Print varKnotPoints(i)
Next i
Debug.Print "The segment count is: " & swSplineParaData.SegmentCount
boolStatus = swSplineParaData.GetSegments(varCtrlPoints)
Debug.Print (swSplineParaData.SegmentCount *
swSplineParaData.Dimension * swSplineParaData.Order) & " Coefficients: "
For i = 0 To UBound(varCtrlPoints)
Debug.Print varCtrlPoints(i)
Next i
Debug.Print ""
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