X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGeomAlgoAPI%2FGeomAlgoAPI_MakeShapeList.cpp;h=1442c5b324204398f776174c4e77fb6a022258a2;hb=b2a662eec6a0258d51a67ee7e341541e7a710752;hp=ac243f7bf9d46d85aaaaa5cb01f07206e56edfb3;hpb=f85ae9faa90bb71573fe234331952a03f83bafb7;p=modules%2Fshaper.git diff --git a/src/GeomAlgoAPI/GeomAlgoAPI_MakeShapeList.cpp b/src/GeomAlgoAPI/GeomAlgoAPI_MakeShapeList.cpp index ac243f7bf..1442c5b32 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() @@ -30,42 +28,35 @@ void GeomAlgoAPI_MakeShapeList::init(const ListOfMakeShape& theMakeShapeList) } //================================================================================================= -void GeomAlgoAPI_MakeShapeList::append(const std::shared_ptr theMakeShape) +void GeomAlgoAPI_MakeShapeList::appendAlgo(const std::shared_ptr theMakeShape) { myListOfMakeShape.push_back(theMakeShape); } -//================================================================================================= -void GeomAlgoAPI_MakeShapeList::append(const GeomAlgoAPI_MakeShapeList& theMakeShapeList) -{ - for(ListOfMakeShape::const_iterator anIt = theMakeShapeList.myListOfMakeShape.cbegin(); - anIt != theMakeShapeList.myListOfMakeShape.cend(); anIt++) { - myListOfMakeShape.push_back(*anIt); - } -} - //================================================================================================= 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(); } //================================================================================================= void GeomAlgoAPI_MakeShapeList::generated(const std::shared_ptr theShape, ListOfShape& theHistory) { - result(theShape, theHistory, GeomAlgoAPI_MakeShapeList::Generated); + result(theShape, GeomAlgoAPI_MakeShapeList::Generated, theHistory); } //================================================================================================= void GeomAlgoAPI_MakeShapeList::modified(const std::shared_ptr theShape, ListOfShape& theHistory) { - result(theShape, theHistory, GeomAlgoAPI_MakeShapeList::Modified); + result(theShape, GeomAlgoAPI_MakeShapeList::Modified, theHistory); } bool GeomAlgoAPI_MakeShapeList::isDeleted(const std::shared_ptr theShape) @@ -81,8 +72,8 @@ bool GeomAlgoAPI_MakeShapeList::isDeleted(const std::shared_ptr t } void GeomAlgoAPI_MakeShapeList::result(const std::shared_ptr theShape, - ListOfShape& theHistory, - OperationType theOperationType) + OperationType theOperationType, + ListOfShape& theHistory) { if(myListOfMakeShape.empty()) { return; @@ -101,10 +92,8 @@ void GeomAlgoAPI_MakeShapeList::result(const std::shared_ptr theS std::shared_ptr aShape(new GeomAPI_Shape); aShape->setImpl(new TopoDS_Shape(aShapeIt.Value())); ListOfShape aGeneratedShapes; - const TopoDS_Shape& aSh = aShape->impl(); aMakeShape->generated(aShape, aGeneratedShapes); for(ListOfShape::const_iterator anIt = aGeneratedShapes.cbegin(); anIt != aGeneratedShapes.cend(); anIt++) { - TopoDS_Shape aSh = (*anIt)->impl(); aTempShapes.Add((*anIt)->impl()); aResultShapes.Add((*anIt)->impl()); hasResults = true; @@ -112,7 +101,6 @@ void GeomAlgoAPI_MakeShapeList::result(const std::shared_ptr theS ListOfShape aModifiedShapes; aMakeShape->modified(aShape, aModifiedShapes); for(ListOfShape::const_iterator anIt = aModifiedShapes.cbegin(); anIt != aModifiedShapes.cend(); anIt++) { - TopoDS_Shape aSH = (*anIt)->impl(); aTempShapes.Add((*anIt)->impl()); aResultShapes.Add((*anIt)->impl()); hasResults = true;