X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FFeaturesPlugin%2FFeaturesPlugin_RevolutionBoolean.cpp;h=566cac8a1d05cf1f804cfeaf4655c40b90d23182;hb=3205d0f18200948632155bbe7b640bc1e482243d;hp=ef3af8ec681fefc767839551d2aa0a006affb61e;hpb=28d64622a1b933c484fa4a8df26302e1358ba5d0;p=modules%2Fshaper.git diff --git a/src/FeaturesPlugin/FeaturesPlugin_RevolutionBoolean.cpp b/src/FeaturesPlugin/FeaturesPlugin_RevolutionBoolean.cpp index ef3af8ec6..566cac8a1 100644 --- a/src/FeaturesPlugin/FeaturesPlugin_RevolutionBoolean.cpp +++ b/src/FeaturesPlugin/FeaturesPlugin_RevolutionBoolean.cpp @@ -1,6 +1,6 @@ // Copyright (C) 2014-20xx CEA/DEN, EDF R&D -// File: FeaturesPlugin_RevolutionBoolean.h +// File: FeaturesPlugin_RevolutionBoolean.cpp // Created: 11 June 2015 // Author: Dmitry Bobylev @@ -37,7 +37,9 @@ void FeaturesPlugin_RevolutionBoolean::initMakeSolidsAttributes() } //================================================================================================= -ListOfShape FeaturesPlugin_RevolutionBoolean::MakeSolids(const ListOfShape& theFaces) +void FeaturesPlugin_RevolutionBoolean::makeSolids(const ListOfShape& theFaces, + ListOfShape& theResults, + ListOfMakeShape& theAlgos) { //Getting axis. std::shared_ptr anAxis; @@ -46,7 +48,7 @@ ListOfShape FeaturesPlugin_RevolutionBoolean::MakeSolids(const ListOfShape& theF if(anObjRef && anObjRef->value() && anObjRef->value()->isEdge()) { anEdge = std::shared_ptr(new GeomAPI_Edge(anObjRef->value())); } else if(anObjRef->context() && anObjRef->context()->shape() && anObjRef->context()->shape()->isEdge()) { - anEdge = std::make_shared(anObjRef->context()->shape()); + anEdge = std::shared_ptr(new GeomAPI_Edge(anObjRef->context()->shape())); } if(anEdge) { anAxis = std::shared_ptr(new GeomAPI_Ax1(anEdge->line()->location(), anEdge->line()->direction())); @@ -86,18 +88,19 @@ ListOfShape FeaturesPlugin_RevolutionBoolean::MakeSolids(const ListOfShape& theF } // Revol faces. - ListOfShape aRevolutionList; + theResults.clear(); for(ListOfShape::const_iterator aFacesIt = theFaces.begin(); aFacesIt != theFaces.end(); aFacesIt++) { std::shared_ptr aBaseShape = *aFacesIt; - GeomAlgoAPI_Revolution aRevolAlgo(aBaseShape, anAxis, aToShape, aToAngle, aFromShape, aFromAngle); + std::shared_ptr aRevolAlgo = std::shared_ptr(new GeomAlgoAPI_Revolution(aBaseShape, anAxis, aToShape, aToAngle, aFromShape, aFromAngle)); // Checking that the algorithm worked properly. - if(!aRevolAlgo.isDone() || aRevolAlgo.shape()->isNull() || !aRevolAlgo.isValid()) { + if(!aRevolAlgo->isDone() || !aRevolAlgo->shape().get() || aRevolAlgo->shape()->isNull() || + !aRevolAlgo->isValid()) { setError("Revolution algorithm failed"); - return ListOfShape(); + theResults.clear(); + return; } - aRevolutionList.push_back(aRevolAlgo.shape()); + theResults.push_back(aRevolAlgo->shape()); + theAlgos.push_back(aRevolAlgo); } - - return aRevolutionList; -} \ No newline at end of file +}