From d2c3d328efbd79697827514c36c064c07ed8cbe8 Mon Sep 17 00:00:00 2001 From: msv Date: Tue, 24 Jan 2017 12:29:02 +0300 Subject: [PATCH] 0028325: Unnecessary copying of surface Giving up creation of new adaptor of the surface without real need. Using the available adaptor instead. --- .../ProjLib_ComputeApproxOnPolarSurface.cxx | 22 +++---------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/src/ProjLib/ProjLib_ComputeApproxOnPolarSurface.cxx b/src/ProjLib/ProjLib_ComputeApproxOnPolarSurface.cxx index 4b410a518d..cfc883989e 100644 --- a/src/ProjLib/ProjLib_ComputeApproxOnPolarSurface.cxx +++ b/src/ProjLib/ProjLib_ComputeApproxOnPolarSurface.cxx @@ -345,29 +345,13 @@ static gp_Pnt2d Function_Value(const Standard_Real theU, if((Usup - U0) > uLittle) uSupLi = U0 + uLittle; else uSupLi = Usup; if((Vsup - V0) > vLittle) vSupLi = V0 + vLittle; else vSupLi = Vsup; - GeomAdaptor_Surface SurfLittle; - if (Type == GeomAbs_BSplineSurface) - { - Handle(Geom_Surface) GBSS(theData.mySurf->Surface().BSpline()); - SurfLittle.Load(GBSS, uInfLi, uSupLi, vInfLi, vSupLi); - } - else if (Type == GeomAbs_BezierSurface) - { - Handle(Geom_Surface) GS(theData.mySurf->Surface().Bezier()); - SurfLittle.Load(GS, uInfLi, uSupLi, vInfLi, vSupLi); - } - else if (Type == GeomAbs_OffsetSurface) - { - Handle(Geom_Surface) GS = GeomAdaptor::MakeSurface(theData.mySurf->Surface()); - SurfLittle.Load(GS, uInfLi, uSupLi, vInfLi, vSupLi); - } - else + if (Type != GeomAbs_BSplineSurface && Type != GeomAbs_BezierSurface && Type != GeomAbs_OffsetSurface) { Standard_NoSuchObject::Raise(""); } // Try to run simple search with initial point (U0, V0). - Extrema_GenLocateExtPS locext(SurfLittle, theData.myTolU, theData.myTolV); + Extrema_GenLocateExtPS locext(theData.mySurf->Surface(), theData.myTolU, theData.myTolV); locext.Perform(p, U0, V0); if (locext.IsDone()) { @@ -382,7 +366,7 @@ static gp_Pnt2d Function_Value(const Standard_Real theU, } // Perform whole param space search. - Extrema_ExtPS ext(p, SurfLittle, theData.myTolU, theData.myTolV); + Extrema_ExtPS ext(p, theData.mySurf->Surface(), theData.myTolU, theData.myTolV); if (ext.IsDone() && ext.NbExt() >= 1) { Dist2Min = ext.SquareDistance(1); -- 2.39.5