Hi all,
I am trying to emulate the perp and tan osnap in my code. This is pretty much how am I doing it on a curve.
void getPerpOsnap(const ON_Curve* crv, ON_SimpleArray<ON_3dPoint> & osnap){
if(crv){
if(const ON_PolyCurve* plycrv = ON_PolyCurve::Cast( crv )){
int segcount = plycrv->Count();
for (int pc = 0 ; pc <segcount; pc++ ){
ON_Curve* crit = plycrv->SegmentCurve(pc);
ON_NurbsCurve nrbcrv_pc;
if (0 != crit && crit->IsValid()){
if(crit->GetNurbForm(nrbcrv_pc)){
int sp = 0;
int nonempty_sp = 0;
while(nonempty_sp < nrbcrv_pc.SpanCount()){
ON_BezierCurve bez;
double tp = 0;
if(nrbcrv_pc.ConvertSpanToBezier(sp, bez)){
bez.Reparameterize(1);
CRhinoSnapContext snap_ctxt;
if(snap_ctxt.PerpSnapToBezier(bez, p0, 0, &tp)){
double lengthSquared = (bez.PointAt(tp)-pickPoint).LengthSquared();
if( lengthSquared < relativePointSquaredDistance){
osnap.Append(bez.PointAt(tp));
}
}
nonempty_sp++;
}
sp++;
}
}
}
}
}
}
}
I might be wrong but I remember in Rhino5 worked fine. At the moment I cannot get the same points I get in the GUI. Same for Tan. Am I extracting the points in the wrong way?
Thanks,
Gennaro