Creating equally spaced points on a curve

Version 1

    Below is an example of how to create equally spaced points on a curve in VB

     


    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim swCurve As SldWorks.Curve
    Dim swSelMgr As SldWorks.SelectionMgr
    Dim swEdge As SldWorks.Edge
    Dim swSketch As SldWorks.Sketch
    Dim swSketchMgr As SldWorks.SketchManager

     

    Dim vStartPt As Variant
    Dim ret As Boolean
    Dim uvStartPt As Double
    Dim uvEndPt As Double
    Dim x As Integer

     

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc

     

    Set swSelMgr = swModel.SelectionManager
    x = swSelMgr.GetSelectedObjectType3(1, -1)
    Set swEdge = swSelMgr.GetSelectedObject6(1, -1)
    Set swSketchMgr = swModel.SketchManager

     


    If Not swEdge Is Nothing Then
        Set swCurve = swEdge.GetCurve

     

        ret = swCurve.GetEndParams(uvStartPt, uvEndPt, False, False): Debug.Assert ret
       
    End If

     

    If ret Then
        'Grab the number of points and make sure it's greater than 0
        If UserForm1.NumberOfPoints > 0 Then
            Dim uvLength As Double
            Dim distance As Double
            Dim point As Double
            Dim i As Integer
            Dim swSkPoint As SldWorks.SketchPoint
            Dim newSketch As SldWorks.Sketch
           
            'Create a new sketch to add the points to
            swSketchMgr.Insert3DSketch (False)
            swModel.EditSketch
            swSketchMgr.AddToDB = True
            Set swSketch = swSketchMgr.ActiveSketch
            i = 0
           
            'Get the length
            uvLength = uvEndPt - uvStartPt
            'Divide by the number of points to get the distance between the points
            distance = uvLength / UserForm1.NumberOfPoints
            'Set where the first point should be placed
            point = uvStartPt + distance
           
            Do While i < UserForm1.NumberOfPoints
                'Evaluate where the point should be placed on the curve
                swCurve.Evaluate (point)
                'Add the point
                Set swSkPoint = swSketchMgr.CreatePoint(vStartPt(0), vStartPt(1), vStartPt(2))
                'Increment the loop counter and the point distance
                i = i + 1
                point = point + distance
         Loop
        swSketchMgr.Insert3DSketch (True)
       
        End If
    End If