Issue
I would like to obtain a listing of 3D points along a selected edge of this geometry. Is there any functionality that would allow me to get Points from an edge at a controlled interval (e.g. return X,Y coords based on Z or return X,Y,Z based on an interval)?
Solution
The following code illustrates. Just select an Edge in your model, and the coordinates of points are output at fixed intervals along the curve (the number of intervals is determined by max_steps, which you can set in the code).
Sub GetPointsOnEdge()
' assumes you have had Inventor application
Dim oDoc As PartDocument
oDoc = _InvApplication.ActiveDocument
Dim oCD As PartComponentDefinition
oCD = oDoc.ComponentDefinition
Dim oEdge As Edge
oEdge = oDoc.SelectSet(1)
Dim oCurveEvaluator As CurveEvaluator
oCurveEvaluator = oEdge.Evaluator
Dim length As Double
Call oCurveEvaluator.GetLengthAtParam(0, 1, length)
Debug.Print(length)
Dim max_steps As Long
max_steps = 100
Dim par_array(max_steps) As Double
Dim I As Long
For I = 0 To max_steps
Dim pos As Double
pos = I * length / max_steps
Dim par_out As Double
Call oCurveEvaluator.GetParamAtLength(0,
pos, par_out)
par_array(I) = par_out
Next I
' each param refers to one point with X.Y,Z values
Dim point_array(max_steps * 3) As Double
Call oCurveEvaluator.GetPointAtParam(par_array,
point_array)
' output the points
For I = 0 To max_steps
Debug.Print("Par = " & par_array(I) &
" Pos = (" & point_array(I * 3) & "," &
point_array(I * 3 + 1) & "," &
point_array(I * 3 + 2) & ")")
Next I
End Sub