Tolerance on Surface.IsIsoparametric?

I’m having a little trouble with calls to Surface.IsIsoparametric(curve2d) failing. Normally works fine but sometimes 2d curves that really look isoparametric are not. The curves in question are generated from BrepFace.OuterLoop.To3dCurve(), broken into segments, then pulled back to the surface domain at using Surface.Pullback at Rhino.RhinoMath.ZeroTolerance.

I’m going to try to sidestep this one but I’m curious why there isn’t a tolerance argument to this method, and how it works under the hood…


Hi @will8,

ON_Surface::IsIsoparametric uses it’s own internal tolerance.

– Dale

You are correct that without a tolerance setting this function is pretty useless. The same thing is true of the IsAtSeam method. Anything that is off by 1/millionth of a mm is going to fail.

As you probably know in 2d parameter space an isocurve is either a vertical or horizontal line. You could use the bounding box to get the max and min of the x and y values to see how far off the curve is in 2d space.