X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGEOMImpl%2FGEOMImpl_HealingDriver.cxx;h=2b937b4505f41a1506d76090e98b3bed743bd417;hb=04e48a49077a1dbdffb320370fd97927e935950b;hp=a1b1d8bdaeeb0a81073dff3ba4119b33a33d310d;hpb=d3dd282390888d7dc091ba2c2ffe7923bd7458e6;p=modules%2Fgeom.git diff --git a/src/GEOMImpl/GEOMImpl_HealingDriver.cxx b/src/GEOMImpl/GEOMImpl_HealingDriver.cxx index a1b1d8bda..2b937b450 100644 --- a/src/GEOMImpl/GEOMImpl_HealingDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_HealingDriver.cxx @@ -1,17 +1,39 @@ - -using namespace std; -#include "GEOMImpl_HealingDriver.hxx" -#include "GEOMImpl_Types.hxx" -#include "GEOMImpl_IHealing.hxx" -#include "GEOM_Function.hxx" - -#include "ShHealOper_ShapeProcess.hxx" -#include "ShHealOper_RemoveFace.hxx" -#include "ShHealOper_CloseContour.hxx" -#include "ShHealOper_RemoveInternalWires.hxx" -#include "ShHealOper_FillHoles.hxx" -#include "ShHealOper_Sewing.hxx" -#include "ShHealOper_EdgeDivide.hxx" +// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include #include #include @@ -44,12 +66,10 @@ const Standard_GUID& GEOMImpl_HealingDriver::GetID() return aHealingDriver; } - //======================================================================= //function : GEOMImpl_HealingDriver //purpose : //======================================================================= - GEOMImpl_HealingDriver::GEOMImpl_HealingDriver() { } @@ -95,6 +115,9 @@ Standard_Integer GEOMImpl_HealingDriver::Execute(TFunction_Logbook& log) const case DIVIDE_EDGE: AddPointOnEdge(&HI, anOriginalShape, aShape); break; + case CHANGE_ORIENTATION: + ChangeOrientation(&HI, anOriginalShape, aShape); + break; default: return 0; } @@ -170,7 +193,9 @@ Standard_Boolean GEOMImpl_HealingDriver::SuppressFaces (GEOMImpl_IHealing* theHI if (aFaces.IsNull()) // remove all faces { aResult = aHealer.Perform(); - } else { + } + else + { TopTools_SequenceOfShape aShapesFaces; TopTools_IndexedMapOfShape aShapes; TopExp::MapShapes(theOriginalShape, aShapes); @@ -359,6 +384,27 @@ Standard_Boolean GEOMImpl_HealingDriver::AddPointOnEdge (GEOMImpl_IHealing* theH } +//======================================================================= +//function : ChangeOrientation +//purpose : +//======================================================================= +Standard_Boolean GEOMImpl_HealingDriver::ChangeOrientation (GEOMImpl_IHealing* theHI, + const TopoDS_Shape& theOriginalShape, + TopoDS_Shape& theOutShape) const +{ + ShHealOper_ChangeOrientation aHealer (theOriginalShape); + + Standard_Boolean aResult = aHealer.Perform(); + + if (aResult) + theOutShape = aHealer.GetResultShape(); + else + raiseNotDoneExeption( aHealer.GetErrorStatus() ); + + return aResult; +} + + //======================================================================= //function : GEOMImpl_HealingDriver_Type_ //purpose : @@ -376,10 +422,10 @@ Standard_EXPORT Handle_Standard_Type& GEOMImpl_HealingDriver_Type_() static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_HealingDriver", - sizeof(GEOMImpl_HealingDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); + sizeof(GEOMImpl_HealingDriver), + 1, + (Standard_Address)_Ancestors, + (Standard_Address)NULL); return _aType; } @@ -399,7 +445,5 @@ const Handle(GEOMImpl_HealingDriver) Handle(GEOMImpl_HealingDriver)::DownCast(co } } - return _anOtherObject ; + return _anOtherObject; } - -