diff --git a/Geo/OCCFace.cpp b/Geo/OCCFace.cpp index f0ad8d11e1849feccb149b46b1a1bd489fb937e5..29a620881b64d66c88098e8bf120030b9809f187 100644 --- a/Geo/OCCFace.cpp +++ b/Geo/OCCFace.cpp @@ -170,19 +170,24 @@ void OCCFace::secondDer(const SPoint2 ¶m, GPoint OCCFace::point(double par1, double par2) const { double pp[2] = {par1, par2}; + +#if 1 + gp_Pnt val = occface->Value(par1, par2); + return GPoint(val.X(), val.Y(), val.Z(), this, pp); +#else // this is horribly slow! double umin2, umax2, vmin2, vmax2; + ShapeAnalysis::GetFaceUVBounds(s, umin2, umax2, vmin2, vmax2); double du = umax2 - umin2; double dv = vmax2 - vmin2; if (par1 > (umax2+.1*du) || par1 < (umin2-.1*du) || - par2 > (vmax2+.1*dv) || par2 < (vmin2-.1*dv)) - { - GPoint p(0,0,0, this, pp); - p.setNoSuccess(); - return p; - } + par2 > (vmax2+.1*dv) || par2 < (vmin2-.1*dv)){ + GPoint p(0,0,0, this, pp); + p.setNoSuccess(); + return p; + } try{ gp_Pnt val; @@ -194,6 +199,7 @@ GPoint OCCFace::point(double par1, double par2) const p.setNoSuccess(); return p; } +#endif } GPoint OCCFace::closestPoint(const SPoint3 &qp, const double initialGuess[2]) const