{
myFace = F;
TopLoc_Location L;
+ 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(BRep_Tool::Surface(F,L),umin,umax,vmin,vmax);
+ mySurf.Load(aSurface,umin,umax,vmin,vmax);
}
else
- mySurf.Load(BRep_Tool::Surface(F,L));
+ mySurf.Load(aSurface);
myTrsf = L.Transformation();
}
{
Bnd_Box2d B;
AddUVBounds(F,B);
- B.Get(UMin,VMin,UMax,VMax);
+ if (!B.IsVoid())
+ {
+ B.Get(UMin,VMin,UMax,VMax);
+ }
+ else
+ {
+ UMin = UMax = VMin = VMax = 0.0;
+ }
}
//=======================================================================
{
Bnd_Box2d B;
AddUVBounds(F,W,B);
- B.Get(UMin,VMin,UMax,VMax);
+ if (!B.IsVoid())
+ {
+ B.Get(UMin,VMin,UMax,VMax);
+ }
+ else
+ {
+ UMin = UMax = VMin = VMax = 0.0;
+ }
}
{
Bnd_Box2d B;
AddUVBounds(F,E,B);
- B.Get(UMin,VMin,UMax,VMax);
+ if (!B.IsVoid())
+ {
+ B.Get(UMin,VMin,UMax,VMax);
+ }
+ else
+ {
+ UMin = UMax = VMin = VMax = 0.0;
+ }
}
//=======================================================================
if (aBox.IsVoid()) {
Standard_Real UMin,UMax,VMin,VMax;
TopLoc_Location L;
- BRep_Tool::Surface(F,L)->Bounds(UMin,UMax,VMin,VMax);
+ const Handle(Geom_Surface)& aSurf = BRep_Tool::Surface(F, L);
+ if (aSurf.IsNull())
+ {
+ return;
+ }
+
+ aSurf->Bounds(UMin,UMax,VMin,VMax);
aBox.Update(UMin,VMin,UMax,VMax);
}
const TopoDS_Edge& aE,
Bnd_Box2d& aB)
{
- Standard_Real aT1, aT2, aXmin, aYmin, aXmax, aYmax;
+ Standard_Real aT1, aT2, aXmin = 0.0, aYmin = 0.0, aXmax = 0.0, aYmax = 0.0;
Standard_Real aUmin, aUmax, aVmin, aVmax;
Bnd_Box2d aBoxC, aBoxS;
TopLoc_Location aLoc;
}
//
BndLib_Add2dCurve::Add(aC2D, aT1, aT2, 0., aBoxC);
- aBoxC.Get(aXmin, aYmin, aXmax, aYmax);
+ if (!aBoxC.IsVoid())
+ {
+ aBoxC.Get(aXmin, aYmin, aXmax, aYmax);
+ }
//
Handle(Geom_Surface) aS = BRep_Tool::Surface(aF, aLoc);
aS->Bounds(aUmin, aUmax, aVmin, aVmax);
// Access surface definition.
TopLoc_Location aLocSurface;
Handle(Geom_Surface) aSurface = BRep_Tool::Surface (theFace, aLocSurface);
+ if (aSurface.IsNull())
+ {
+ return;
+ }
// Access triangulation.
TopLoc_Location aLocTriangulation;
aVmax = Min (aVmax, theUVLimit);
TopLoc_Location aLocation;
- Handle(Geom_Surface) aSurface = BRep_Tool::Surface (theFace, aLocation);
+ const Handle(Geom_Surface)& aSurface = BRep_Tool::Surface (theFace, aLocation);
+ if (aSurface.IsNull())
+ {
+ return;
+ }
const Standard_Boolean isUClosed = aSurface->IsUClosed();
const Standard_Boolean isVClosed = aSurface->IsVClosed();