Get Point on Curve/Wire by Length

... as the subject says I want to get a point on a wire by length - tried everything but I see no way to do so. Using the parametric values also doesn´t help... someone an idea???
Thanks - Stefan

Fotis Sioutis's picture

BRepAdaptor_CompCurve is the solution.See code below :

BRepAdaptor_CompCurve aCompoundCurve(TopoDS::Wire(aRailSh), Standard_True);
"then"
aCompoundCurve.D0( parm, aPnt );

should give the point in space.

Fotis

Stephane Routelous's picture

I had problems with doing it like that
I had to do my own "BRepAdaptor_CompCurve" and using recursive code to have a correct result, as using the code as you mentionned was producing a point at a bad distance (accuracy issue).

Stephane

StefanKunze's picture

Ahhhh.... and I thought it´s something "easy".

Stephane Routelous's picture

well, it's supposed to be easy..
the "easy" way is to use GCPnts_AbscissaPoint
but as i said, it gave me incorrect results. you can still test with your wires/curves to see if it works for you.

Stephane

StefanKunze's picture

Hmmm... yeah the problem is that I have to use the length to find the point... (it´s some kind of strange transformation and it will only work correct when I take the length). Finding a point by length doesn´t seems to be supported. And an recursive alg. could be very time consuming.
damn....

Stephane Routelous's picture

> And an recursive alg. could be very time consuming.
no it's quite fast (at least fast enough for my cases)

Stéphane

StefanKunze's picture

yeah... u say the algorithm is quite good. Can I see it. ;)

StefanKunze's picture

Ok.... it took me some time to check out what the second parameter means... thanks i will give it a try!!!