X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGeomAlgoAPI%2FGeomAlgoAPI_PaveFiller.cpp;h=3dd1cb0b0b7fffd70f4918754dee048bacc0e34b;hb=220bd2b37119be1c65abf88a88792445cb9d99f8;hp=beeccc72a4d9f355ef91558dca4e9676b6644df7;hpb=868158fe6d39b25e60ac528295b1c908821e4af5;p=modules%2Fshaper.git diff --git a/src/GeomAlgoAPI/GeomAlgoAPI_PaveFiller.cpp b/src/GeomAlgoAPI/GeomAlgoAPI_PaveFiller.cpp index beeccc72a..3dd1cb0b0 100644 --- a/src/GeomAlgoAPI/GeomAlgoAPI_PaveFiller.cpp +++ b/src/GeomAlgoAPI/GeomAlgoAPI_PaveFiller.cpp @@ -4,20 +4,18 @@ // Created: 27 August 2015 // Author: Dmitry Bobylev -#include +#include "GeomAlgoAPI_PaveFiller.h" #include #include #include #include -#include -#include #include +#include //================================================================================================= GeomAlgoAPI_PaveFiller::GeomAlgoAPI_PaveFiller(const ListOfShape& theListOfShape, const bool theIsMakeCompSolids) -: myDone(false) { build(theListOfShape, theIsMakeCompSolids); } @@ -29,7 +27,14 @@ void GeomAlgoAPI_PaveFiller::build(const ListOfShape& theListOfShape, const bool BOPAlgo_PaveFiller aPaveFiller; BOPCol_ListOfShape aListOfShape; for(ListOfShape::const_iterator anIt = theListOfShape.cbegin(); anIt != theListOfShape.cend(); anIt++) { - aListOfShape.Append((*anIt)->impl()); + const TopoDS_Shape& aShape = (*anIt)->impl(); + if(aShape.ShapeType() == TopAbs_COMPOUND) { + for(TopoDS_Iterator anIter(aShape); anIter.More(); anIter.Next()) { + aListOfShape.Append(anIter.Value()); + } + } else { + aListOfShape.Append(aShape); + } } aPaveFiller.SetArguments(aListOfShape); aPaveFiller.Perform(); @@ -39,7 +44,8 @@ void GeomAlgoAPI_PaveFiller::build(const ListOfShape& theListOfShape, const bool } BOPAlgo_Builder* aBuilder = new BOPAlgo_Builder(); - myMkShape.reset(new GeomAlgoAPI_MakeShape(aBuilder, GeomAlgoAPI_MakeShape::OCCT_BOPAlgo_Builder)); + this->setImpl(aBuilder); + this->setBuilderType(OCCT_BOPAlgo_Builder); aBuilder->SetArguments(aListOfShape); aBuilder->PerformWithFiller(aPaveFiller); iErr = aBuilder->ErrorStatus(); @@ -72,47 +78,8 @@ void GeomAlgoAPI_PaveFiller::build(const ListOfShape& theListOfShape, const bool } } - // fill data map to keep correct orientation of sub-shapes - myMap.reset(new GeomAPI_DataMapOfShapeShape()); - for (TopExp_Explorer Exp(aResult, TopAbs_FACE); Exp.More(); Exp.Next()) { - std::shared_ptr aCurrentShape(new GeomAPI_Shape()); - aCurrentShape->setImpl(new TopoDS_Shape(Exp.Current())); - myMap->bind(aCurrentShape, aCurrentShape); - } - - myShape.reset(new GeomAPI_Shape()); - myShape->setImpl(new TopoDS_Shape(aResult)); - - myDone = true; -} - -//================================================================================================= -const bool GeomAlgoAPI_PaveFiller::isDone() const -{ - return myDone; -} - -//================================================================================================= -const bool GeomAlgoAPI_PaveFiller::isValid() const -{ - BRepCheck_Analyzer aChecker(myShape->impl()); - return (aChecker.IsValid() == Standard_True); -} - -//================================================================================================= -std::shared_ptr GeomAlgoAPI_PaveFiller::shape() const -{ - return myShape; -} - -//================================================================================================= -std::shared_ptr GeomAlgoAPI_PaveFiller::mapOfShapes() const -{ - return myMap; -} - -//================================================================================================= -std::shared_ptr GeomAlgoAPI_PaveFiller::makeShape() const -{ - return myMkShape; + std::shared_ptr aShape(new GeomAPI_Shape()); + aShape->setImpl(new TopoDS_Shape(aResult)); + this->setShape(aShape); + this->setDone(true); }