MAJ for planes

This commit is contained in:
fps 2012-02-13 12:52:41 +00:00
parent 637e87d26f
commit 4f8c197c8a

View File

@ -61,6 +61,8 @@
#include <Bnd_Box.hxx> #include <Bnd_Box.hxx>
#include <BRepBndLib.hxx> #include <BRepBndLib.hxx>
#include <gp_Pnt.hxx> #include <gp_Pnt.hxx>
#include <GC_MakePlane.hxx>
//======================================================================= //=======================================================================
//function : GetID //function : GetID
//purpose : //purpose :
@ -140,34 +142,54 @@ Standard_Integer GEOMImpl_SmoothingSurfaceDriver::Execute(TFunction_Logbook& log
} }
else else
{ {
// Initial surface : Plane
Standard_Real aX = aXmax-aXmin; Standard_Real aX = aXmax-aXmin;
Standard_Real aY = aYmax-aYmin; Standard_Real aY = aYmax-aYmin;
Standard_Real aZ = aZmax-aZmin; Standard_Real aZ = aZmax-aZmin;
gp_Pnt aPnt1 = gp_Pnt(aXmin, aYmin, aZmin); gp_Pnt aPnt1;
gp_Pnt aPnt2 = gp_Pnt(aXmax, aYmax, aZmax); gp_Pnt aPnt2;
gp_Pnt aPnt3; gp_Pnt aPnt3;
if (aX > aY) if (aX > aY)
{ {
if (aZ > aY) if (aX > aZ)
{ {
aPnt3 = gp_Pnt(aXmin, aYmax, aZmax); // X Plane
aPnt1 = gp_Pnt(aXmin, aYmin+aY/2, aZmin);
aPnt2 = gp_Pnt(aXmin, aYmin+aY/2, aZmax);
aPnt3 = gp_Pnt(aXmax, aYmin+aY/2, aZmin);
} }
else else
{ {
aPnt3 = gp_Pnt(aXmax, aYmin, aZmax); // Z Plane
aPnt1 = gp_Pnt(aXmin+aX/2, aYmin, aZmin);
aPnt2 = gp_Pnt(aXmin+aX/2, aYmin, aZmax);
aPnt3 = gp_Pnt(aXmin+aX/2, aYmax, aZmin);
} }
} }
else else
{ {
if (aZ > aY) if (aY > aZ)
{ {
aPnt3 = gp_Pnt(aXmax, aYmin, aZmax); // Y Plane
aPnt1 = gp_Pnt(aXmin, aYmin, aZmin+aZ/2);
aPnt2 = gp_Pnt(aXmin, aYmax, aZmin+aZ/2);
aPnt3 = gp_Pnt(aXmax, aYmin, aZmin+aZ/2);
} }
else else
{ {
aPnt3 = gp_Pnt(aXmax, aYmin, aZmax); // Z Plane
aPnt1 = gp_Pnt(aXmin+aX/2, aYmin, aZmin);
aPnt2 = gp_Pnt(aXmin+aX/2, aYmin, aZmax);
aPnt3 = gp_Pnt(aXmin+aX/2, aYmax, aZmin);
} }
} }
GC_MakePlane aMakePlane (aPnt1, aPnt2, aPnt3);
double aSize = (aX+aY+aZ)/2;
#if OCC_VERSION_LARGE > 0x06050100 // for OCC-6.5.2 and higher version
aInitShape = BRepBuilderAPI_MakeFace(aMakePlane, -aSize, aSize, -aSize, aSize, Precision::Confusion()).Face();
#else
aInitShape = BRepBuilderAPI_MakeFace(aMakePlane, -aSize, aSize, -aSize, aSize).Face();
#endif
} }
// ** Initialization of surface // ** Initialization of surface