+ theResultBody->storeModified(theBaseShape, theAlgo.shape(), aSubsolidsTag);
+
+ ListOfShape::const_iterator aFaceIter = theFaces.begin();
+ std::list<std::shared_ptr<GeomAPI_Interface>>::const_iterator aSolidsAlgosIter = theSolidsAlgos.begin();
+ for(; aFaceIter != theFaces.end() && aSolidsAlgosIter != theSolidsAlgos.end(); aFaceIter++, aSolidsAlgosIter++) {
+ std::shared_ptr<GeomAPI_Shape> aFromFace;
+ std::shared_ptr<GeomAPI_Shape> aToFace;
+ std::shared_ptr<GeomAPI_DataMapOfShapeShape> aSubShapes;
+
+ //Insert lateral face : Face from Edge
+ if(std::dynamic_pointer_cast<GeomAlgoAPI_Prism>(*aSolidsAlgosIter)) {
+ std::shared_ptr<GeomAlgoAPI_Prism> aPrismAlgo = std::dynamic_pointer_cast<GeomAlgoAPI_Prism>(*aSolidsAlgosIter);
+ aSubShapes = aPrismAlgo->mapOfShapes();
+ theResultBody->loadAndOrientGeneratedShapes(aPrismAlgo->makeShape().get(), *aFaceIter, GeomAPI_Shape::EDGE, aGenTag,
+ aLatName, *aSubShapes.get());
+ //TODO:fix
+ //aFromFace = aPrismAlgo->firstShape();
+ //aToFace = aPrismAlgo->lastShape();
+ } else if(std::dynamic_pointer_cast<GeomAlgoAPI_Revolution>(*aSolidsAlgosIter)) {
+ std::shared_ptr<GeomAlgoAPI_Revolution> aRevolAlgo = std::dynamic_pointer_cast<GeomAlgoAPI_Revolution>(*aSolidsAlgosIter);
+ aSubShapes = aRevolAlgo->mapOfShapes();
+ theResultBody->loadAndOrientGeneratedShapes(aRevolAlgo->makeShape().get(), *aFaceIter, GeomAPI_Shape::EDGE, aGenTag,
+ aLatName, *aSubShapes.get());
+ aFromFace = aRevolAlgo->firstShape();
+ aToFace = aRevolAlgo->lastShape();
+ }
+
+ /*
+ //Insert bottom face
+ if(!aFromFace->isNull()) {
+ if(aSubShapes->isBound(aFromFace)) {
+ aFromFace = aSubShapes->find(aFromFace);
+ }
+ theResultBody->generated(aFromFace, aFrName, aFrTag);
+ }
+
+ //Insert top face
+ if (!aToFace->isNull()) {
+ if (aSubShapes->isBound(aToFace)) {
+ aToFace = aSubShapes->find(aToFace);
+ }
+ theResultBody->generated(aToFace, aToName, aToTag);
+ }
+ */
+ }