Get b-spline parameters from the selected edge using SOLIDWORKS API

Edit ArticleEdit Article

Selected b-spline edge
Selected b-spline edge

This VBA example extracts the parameters (dimension, order, periodicity, control and knot points) from the selected edge of b-spline type (e.g. edge derived from the spline segment). The extracted data can be used in the IModeler::CreateBsplineCurve SOLIDWORKS API method to build the curve of the same geometry.

The data is output into the Immediate window of VBA editor in the following format:

 Dimension Val 
 Order Val
 Control Points Count Val
 Periodic Val
 Val 1
 Val N
Control Points:
 Val 1
 Val N

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr

Sub main()

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swSelMgr = swModel.SelectionManager
    Dim swEdge As SldWorks.Edge
    Set swEdge = swSelMgr.GetSelectedObject6(1, -1)
    Dim swCurve As SldWorks.Curve
    Set swCurve = swEdge.GetCurve
    Dim swSplineData As SldWorks.SplineParamData
    Set swSplineData = swCurve.GetBCurveParams5(False, False, False, False)
    Dim i As Integer
    Debug.Print "Props:"
    Debug.Print swSplineData.Dimension
    Debug.Print swSplineData.Order
    Debug.Print swSplineData.ControlPointsCount
    Debug.Print swSplineData.Periodic
    Debug.Print "Knots:"
    Dim vKnotPts As Variant
    swSplineData.GetKnotPoints vKnotPts
    For i = 0 To UBound(vKnotPts)
        Debug.Print vKnotPts(i)
    Debug.Print "Control Points:"
    Dim vCtrlPts As Variant
    swSplineData.GetControlPoints vCtrlPts
    For i = 0 To UBound(vCtrlPts)
        Debug.Print vCtrlPts(i)
End Sub


All articles and code at CodeStack are now open-source and hosted on GitHub. If you want to contribute by modifying existing articles and code snippets, submitting new ones, reporting errors and bugs etc. please follow this blog post for more information. We appreciate any contribution.

Product of Xarial Product of Xarial