I am complete newbie when it comes to macros. Anyways, my goal is to split spline into number of points. I found one macro that does this very well, but the problem for me is that points that split the spline are "equally distanced" in terms of distance along the spline. As a result I get points, which are not equally distanced in terms of x coordinate (along x-axis) which is what I want...

I have an idea to split x-axis into equally distanced points and then project them on the spline to get points which have the same "step" in x coordinate. But I just simply have no knowledge to execute this I don't even know if this is a good idea. Any help would be very helpful...

I attached image below for better understanding. Orange arrow is along the spline and is equally distanced but x1 does not equal to x2, which is my goal..

**MACRO:**

Option Explicit

Dim swApp As SldWorks.SldWorks

Dim swModel As SldWorks.ModelDoc2

Dim swSelMgr As SldWorks.SelectionMgr

Dim vFeatArr As Variant

Dim swFeatMgr As SldWorks.FeatureManager

Dim swModelDocExt As SldWorks.ModelDocExtension

Dim swSpline As SldWorks.SketchSpline

Dim vFeat As Variant

Dim swFeat As SldWorks.Feature

Dim swRefPt As SldWorks.RefPoint

Dim swRefPtData As SldWorks.RefPointFeatureData

Dim swMathPt As SldWorks.MathPoint

Dim swSkPt As SketchPoint

Dim swMgr As SketchManager

Dim nStatus As Long

Dim bRet As Boolean

Dim boolstatus As Boolean

Dim i As Long

Sub main()

Set swApp = Application.SldWorks

Set swModel = swApp.ActiveDoc

Set swSelMgr = swModel.SelectionManager

Set swFeatMgr = swModel.FeatureManager

Set swModelDocExt = swModel.Extension

If Not swSelMgr.GetSelectedObjectType3(1, -1) = swSelEXTSKETCHSEGS Then

MsgBox "select spline"

Exit Sub

End If

Dim Spline As Object

Set Spline = swSelMgr.GetSelectedObject6(1, -1)

vFeatArr = swFeatMgr.InsertReferencePoint(swRefPointAlongCurve, swRefPointAlongCurveEvenlyDistributed, 0#, 300)

Set swMgr = swModel.SketchManager

swModel.ClearSelection2 True

swModel.Insert3DSketch2 False

swMgr.AddToDB = True

For Each vFeat In vFeatArr

Set swFeat = vFeat

Set swRefPt = swFeat.GetSpecificFeature2

Set swRefPtData = swFeat.GetDefinition

Set swMathPt = swRefPt.GetRefPoint

Set swSkPt = swMgr.CreatePoint(swMathPt.ArrayData(0), swMathPt.ArrayData(1), swMathPt.ArrayData(2))

Next

swMgr.AddToDB = False

swModel.ClearSelection2 True

swModel.Insert3DSketch2 True

End Sub

You will need to intersect the curve with a range of vertical lines. You can create those in such a way that they don't show up in the UI.

I have attached an example.