X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FFeaturesPlugin%2FFeaturesPlugin_BooleanFill.cpp;h=cb039b01a6b243854b251749cfb638b5764c7ca6;hb=a13f87935d2a6f52f942790b6abc874f1016c9fc;hp=6db4eb4d9ef67ffa6928563f1f1d4f661dc0bc99;hpb=13c564bef7d39cd31b142d6723caf03501a4f683;p=modules%2Fshaper.git diff --git a/src/FeaturesPlugin/FeaturesPlugin_BooleanFill.cpp b/src/FeaturesPlugin/FeaturesPlugin_BooleanFill.cpp index 6db4eb4d9..cb039b01a 100644 --- a/src/FeaturesPlugin/FeaturesPlugin_BooleanFill.cpp +++ b/src/FeaturesPlugin/FeaturesPlugin_BooleanFill.cpp @@ -50,14 +50,14 @@ FeaturesPlugin_BooleanFill::FeaturesPlugin_BooleanFill() void FeaturesPlugin_BooleanFill::initAttributes() { FeaturesPlugin_Boolean::initAttributes(); - initVersion(THE_VERSION_1, selectionList(OBJECT_LIST_ID()), selectionList(TOOL_LIST_ID())); + initVersion(BOP_VERSION_9_4(), selectionList(OBJECT_LIST_ID()), selectionList(TOOL_LIST_ID())); } //================================================================================================= void FeaturesPlugin_BooleanFill::execute() { std::string anError; - ObjectHierarchy anObjects, aTools; + GeomAPI_ShapeHierarchy anObjects, aTools; ListOfShape aPlanes; // Getting objects. @@ -72,22 +72,19 @@ void FeaturesPlugin_BooleanFill::execute() int aResultIndex = 0; - if (anObjects.IsEmpty() || (aTools.IsEmpty() && aPlanes.empty())) { + if (anObjects.empty() || (aTools.empty() && aPlanes.empty())) { std::string aFeatureError = "Error: Not enough objects for boolean operation."; setError(aFeatureError); return; } - // version of Split feature - int aSplitVersion = version(); - std::vector aResultBaseAlgoList; ListOfShape aResultShapesList; std::shared_ptr aMakeShapeList(new GeomAlgoAPI_MakeShapeList()); GeomShapePtr aResultCompound; - if (aSplitVersion == THE_VERSION_1) { + if (data()->version() == BOP_VERSION_9_4()) { // merge hierarchies of compounds containing objects and tools aResultCompound = keepUnusedSubsOfCompound(GeomShapePtr(), anObjects, aTools, aMakeShapeList); @@ -95,30 +92,30 @@ void FeaturesPlugin_BooleanFill::execute() // For solids cut each object with all tools. bool isOk = true; - for (ObjectHierarchy::Iterator anObjectsIt = anObjects.Begin(); - anObjectsIt != anObjects.End() && isOk; + for (GeomAPI_ShapeHierarchy::iterator anObjectsIt = anObjects.begin(); + anObjectsIt != anObjects.end() && isOk; ++anObjectsIt) { GeomShapePtr anObject = *anObjectsIt; - GeomShapePtr aParent = anObjects.Parent(anObject, false); + GeomShapePtr aParent = anObjects.parent(anObject, false); if (aParent && aParent->shapeType() == GeomAPI_Shape::COMPSOLID) { // get parent once again to mark it and the subs as processed - aParent = anObjects.Parent(anObject); + aParent = anObjects.parent(anObject); // compsolid handling isOk = processCompsolid(GeomAlgoAPI_Tools::BOOL_PARTITION, - anObjects, aParent, aTools.Objects(), aPlanes, + anObjects, aParent, aTools.objects(), aPlanes, aResultIndex, aResultBaseAlgoList, aResultShapesList, aResultCompound); } else { // process object as is isOk = processObject(GeomAlgoAPI_Tools::BOOL_PARTITION, - anObject, aTools.Objects(), aPlanes, + anObject, aTools.objects(), aPlanes, aResultIndex, aResultBaseAlgoList, aResultShapesList, aResultCompound); } } - storeResult(anObjects.Objects(), aTools.Objects(), aResultCompound, aResultIndex, + storeResult(anObjects.objects(), aTools.objects(), aResultCompound, aResultIndex, aMakeShapeList, aResultBaseAlgoList); // Store deleted shapes after all results has been proceeded. This is to avoid issue when in one @@ -126,7 +123,7 @@ void FeaturesPlugin_BooleanFill::execute() if (!aResultCompound) aResultCompound = GeomAlgoAPI_CompoundBuilder::compound(aResultShapesList); FeaturesPlugin_Tools::loadDeletedShapes(aResultBaseAlgoList, - aTools.Objects(), + aTools.objects(), aResultCompound); // remove the rest results if there were produced in the previous pass