X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGeomAlgoAPI%2FGeomAlgoAPI_MakeShapeList.cpp;h=7be7d7c12571d913d033c8ed67d144dbbaad4f4d;hb=f0cec241aae9ca16d86e166f45cb5c4987d2c792;hp=cdcc4596dadc8b541ea65f98bedd3f9d896e1a81;hpb=811b2ca2d1a046ba83da8c4848c2d3cf061b6afa;p=modules%2Fshaper.git diff --git a/src/GeomAlgoAPI/GeomAlgoAPI_MakeShapeList.cpp b/src/GeomAlgoAPI/GeomAlgoAPI_MakeShapeList.cpp index cdcc4596d..7be7d7c12 100644 --- a/src/GeomAlgoAPI/GeomAlgoAPI_MakeShapeList.cpp +++ b/src/GeomAlgoAPI/GeomAlgoAPI_MakeShapeList.cpp @@ -4,12 +4,10 @@ // Created: 27 May 2015 // Author: Dmitry Bobylev -#include +#include "GeomAlgoAPI_MakeShapeList.h" -#include #include -#include -#include +#include //================================================================================================= GeomAlgoAPI_MakeShapeList::GeomAlgoAPI_MakeShapeList() @@ -26,32 +24,40 @@ GeomAlgoAPI_MakeShapeList::GeomAlgoAPI_MakeShapeList(const ListOfMakeShape& theM //================================================================================================= void GeomAlgoAPI_MakeShapeList::init(const ListOfMakeShape& theMakeShapeList) { + if(myMap.get()) { + myMap->clear(); + } else { + myMap.reset(new GeomAPI_DataMapOfShapeShape); + } + myListOfMakeShape = theMakeShapeList; -} -//================================================================================================= -void GeomAlgoAPI_MakeShapeList::append(const std::shared_ptr theMakeShape) -{ - myListOfMakeShape.push_back(theMakeShape); + for(ListOfMakeShape::const_iterator anIt = theMakeShapeList.cbegin(); + anIt != theMakeShapeList.cend(); ++anIt) { + myMap->merge((*anIt)->mapOfSubShapes()); + } } //================================================================================================= -void GeomAlgoAPI_MakeShapeList::append(const GeomAlgoAPI_MakeShapeList& theMakeShapeList) +void GeomAlgoAPI_MakeShapeList::appendAlgo(const std::shared_ptr theMakeShape) { - for(ListOfMakeShape::const_iterator anIt = theMakeShapeList.myListOfMakeShape.cbegin(); - anIt != theMakeShapeList.myListOfMakeShape.cend(); anIt++) { - myListOfMakeShape.push_back(*anIt); + myListOfMakeShape.push_back(theMakeShape); + if(!myMap.get()) { + myMap.reset(new GeomAPI_DataMapOfShapeShape()); } + myMap->merge(theMakeShape->mapOfSubShapes()); } //================================================================================================= const std::shared_ptr GeomAlgoAPI_MakeShapeList::shape() const { - if(myListOfMakeShape.empty()) { - return std::shared_ptr(); - } else { + std::shared_ptr aShape = GeomAlgoAPI_MakeShape::shape(); + if(aShape.get() && !aShape->impl().IsNull()) { + return aShape; + } else if(!myListOfMakeShape.empty()) { return myListOfMakeShape.back()->shape(); } + return std::shared_ptr(); } //=================================================================================================