X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FFeaturesPlugin%2FFeaturesPlugin_ExtrusionBoolean.cpp;h=9b00d7187fd84c872546c58b43c48f13e937521f;hb=a930200bbf92c778fc684a3db477064f85f9cafe;hp=88af05a750c715cb4dd46e280d65eefa8b9b6c9f;hpb=87b6a30a3afb8fb32e7e43ade8d9c947d9eb1684;p=modules%2Fshaper.git diff --git a/src/FeaturesPlugin/FeaturesPlugin_ExtrusionBoolean.cpp b/src/FeaturesPlugin/FeaturesPlugin_ExtrusionBoolean.cpp old mode 100755 new mode 100644 index 88af05a75..9b00d7187 --- a/src/FeaturesPlugin/FeaturesPlugin_ExtrusionBoolean.cpp +++ b/src/FeaturesPlugin/FeaturesPlugin_ExtrusionBoolean.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2014-2017 CEA/DEN, EDF R&D +// Copyright (C) 2014-2022 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -12,14 +12,18 @@ // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ or -// email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "FeaturesPlugin_ExtrusionBoolean.h" +#include +#include + +#include + //================================================================================================= void FeaturesPlugin_ExtrusionBoolean::initAttributes() { @@ -32,15 +36,46 @@ void FeaturesPlugin_ExtrusionBoolean::initAttributes() bool FeaturesPlugin_ExtrusionBoolean::makeGeneration(ListOfShape& theBaseShapes, ListOfMakeShape& theMakeShapes) { - return makeExtrusions(theBaseShapes, theMakeShapes); + ListOfShape aBoundaryShapes; + return makeExtrusions(theBaseShapes, aBoundaryShapes, theMakeShapes); } //================================================================================================= void FeaturesPlugin_ExtrusionBoolean::storeGenerationHistory(ResultBodyPtr theResultBody, const GeomShapePtr theBaseShape, - const std::shared_ptr theMakeShape, - int& theTag) + const std::shared_ptr theMakeShape) { - FeaturesPlugin_Extrusion::storeGenerationHistory(theResultBody, theBaseShape, - theMakeShape, theTag); + FeaturesPlugin_Extrusion::storeGenerationHistory(theResultBody, theBaseShape, theMakeShape); +} + +//================================================================================================= +void FeaturesPlugin_ExtrusionBoolean::getSizes(double& theToSize, double& theFromSize) +{ + if (string(CREATION_METHOD())->value() != CREATION_METHOD_THROUGH_ALL()) { + FeaturesPlugin_Extrusion::getSizes(theToSize, theFromSize); + } else { + // Getting objects. + ListOfShape anObjects; + AttributeSelectionListPtr anObjectsSelList = myFeature->selectionList(OBJECTS_ID()); + for (int anObjectsIndex = 0; anObjectsIndex < anObjectsSelList->size(); anObjectsIndex++) { + AttributeSelectionPtr anObjectAttr = anObjectsSelList->value(anObjectsIndex); + GeomShapePtr anObject = anObjectAttr->value(); + if (!anObject.get()) { + myFeature->setError("Error: Could not get object."); + return; + } + anObjects.push_back(anObject); + } + + // Getting prism bases. + ListOfShape aBaseShapes; + getBaseShapes(aBaseShapes); + + // Getting prism direction. + std::shared_ptr aDir; + getDirection(aDir); + + // Calculate sizes + GeomAlgoAPI_ShapeTools::computeThroughAll(anObjects, aBaseShapes, aDir, theToSize, theFromSize); + } }