X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FBuildPlugin%2FBuildPlugin_CompSolid.cpp;h=0fdb399fa31098b109dc1c4aa34577bb503dfd9c;hb=a7fd4451c50f6b1814715647bf153303bcd3ab58;hp=8b19e13f3c815dfb68b68b71491a8cf96cc49e6f;hpb=dc7d4d86b58b81684abc9b5a2be8ec30f210c2da;p=modules%2Fshaper.git diff --git a/src/BuildPlugin/BuildPlugin_CompSolid.cpp b/src/BuildPlugin/BuildPlugin_CompSolid.cpp index 8b19e13f3..0fdb399fa 100644 --- a/src/BuildPlugin/BuildPlugin_CompSolid.cpp +++ b/src/BuildPlugin/BuildPlugin_CompSolid.cpp @@ -20,7 +20,7 @@ #include "BuildPlugin_CompSolid.h" -#include +#include #include //================================================================================================= @@ -37,22 +37,21 @@ void BuildPlugin_CompSolid::initAttributes() //================================================================================================= void BuildPlugin_CompSolid::execute() { + // all the needed checkings are in validator, so, here just make and store result ListOfShape anOriginalShapes; - std::shared_ptr aVolumeMaker; - if (!build(anOriginalShapes, aVolumeMaker)) - return; - - GeomShapePtr aVolumeRes = aVolumeMaker->shape(); + AttributeSelectionListPtr aSelectionList = selectionList(BASE_OBJECTS_ID()); + for (int anIndex = 0; anIndex < aSelectionList->size(); ++anIndex) { + AttributeSelectionPtr aSelection = aSelectionList->value(anIndex); + GeomShapePtr aShape = aSelection->value(); + if (!aShape.get()) + aShape = aSelection->context()->shape(); + anOriginalShapes.push_back(aShape); + } + std::shared_ptr anAlgo( + new GeomAlgoAPI_MakeVolume(anOriginalShapes, false)); + GeomShapePtr aVolumeRes = anAlgo->shape(); // check and process result of volume maker - GeomShapePtr aResShape = getSingleSubshape(aVolumeRes, GeomAPI_Shape::COMPSOLID); - if (!aResShape) // try to build a solid - aResShape = getSingleSubshape(aVolumeRes, GeomAPI_Shape::SOLID); - - int anIndex = 0; - if (aResShape) { - storeResult(anOriginalShapes, aResShape, aVolumeMaker); - ++anIndex; - } - removeResults(anIndex); + GeomShapePtr aResShape = getSingleSubshape(aVolumeRes); + storeResult(anOriginalShapes, aResShape, anAlgo); }