diff --git a/src/BRepAdaptor/BRepAdaptor_Surface.cxx b/src/BRepAdaptor/BRepAdaptor_Surface.cxx index 850facead9..b0e8dc47f2 100644 --- a/src/BRepAdaptor/BRepAdaptor_Surface.cxx +++ b/src/BRepAdaptor/BRepAdaptor_Surface.cxx @@ -72,18 +72,19 @@ void BRepAdaptor_Surface::Initialize(const TopoDS_Face& F, { myFace = F; TopLoc_Location L; - const Handle(Geom_Surface)& aSurface = BRep_Tool::Surface(F, L); - if (aSurface.IsNull()) + const Handle (Geom_Surface)& aSurface = BRep_Tool::Surface (F, L); + if (aSurface.IsNull ()) return; - if (Restriction) { - Standard_Real umin,umax,vmin,vmax; - BRepTools::UVBounds(F,umin,umax,vmin,vmax); - mySurf.Load(aSurface,umin,umax,vmin,vmax); + if (Restriction) + { + Standard_Real umin, umax, vmin, vmax; + BRepTools::UVBounds (F, umin, umax, vmin, vmax); + mySurf.Load (aSurface, umin, umax, vmin, vmax); } - else - mySurf.Load(aSurface); - myTrsf = L.Transformation(); + else + mySurf.Load (aSurface); + myTrsf = L.Transformation (); } @@ -425,6 +426,10 @@ Handle(Adaptor3d_HCurve) BRepAdaptor_Surface::BasisCurve() const Handle(Adaptor3d_HSurface) BRepAdaptor_Surface::BasisSurface() const { + if(mySurf.Surface().IsNull()) + { + return Handle(Adaptor3d_HSurface)(); + } Handle(GeomAdaptor_HSurface) HS = new GeomAdaptor_HSurface(); HS->ChangeSurface().Load (Handle(Geom_Surface)::DownCast(mySurf.Surface()->Transformed(myTrsf))); diff --git a/src/Extrema/Extrema_GenExtPS.cxx b/src/Extrema/Extrema_GenExtPS.cxx index 6c949bc0cd..24279056f3 100644 --- a/src/Extrema/Extrema_GenExtPS.cxx +++ b/src/Extrema/Extrema_GenExtPS.cxx @@ -803,6 +803,11 @@ void Extrema_GenExtPS::Perform(const gp_Pnt& P) myDone = Standard_False; myF.SetPoint(P); + if (myS->BasisSurface ().IsNull ()) + { + return; + } + if(myAlgo == Extrema_ExtAlgo_Grad) { BuildGrid(P);