From 04f6b1edeaa70cbb3365f5d215745c1178aeea27 Mon Sep 17 00:00:00 2001 From: Ekaterina Sukhareva Date: Fri, 29 Sep 2023 17:26:02 +0100 Subject: [PATCH] [EDF] (2023-T1) Filters on group --- src/FiltersPlugin/CMakeLists.txt | 7 +- .../FiltersPlugin_OnShapeName.cpp | 120 +++++++++++ src/FiltersPlugin/FiltersPlugin_OnShapeName.h | 59 ++++++ src/FiltersPlugin/FiltersPlugin_Plugin.cpp | 2 + src/FiltersPlugin/FiltersPlugin_msg_en.ts | 13 ++ src/FiltersPlugin/FiltersPlugin_msg_fr.ts | 13 ++ .../Test/TestFilter_OnShapeName.py | 197 ++++++++++++++++++ .../Test/TestFilters_Supported.py | 13 +- src/FiltersPlugin/doc/FiltersPlugin.rst | 19 ++ .../doc/images/selection_byShapeName1.png | Bin 0 -> 35225 bytes .../doc/images/selection_byShapeName2.png | Bin 0 -> 52200 bytes src/FiltersPlugin/filter-OnShapeName.xml | 4 + src/FiltersPlugin/tests.set | 1 + 13 files changed, 441 insertions(+), 7 deletions(-) create mode 100644 src/FiltersPlugin/FiltersPlugin_OnShapeName.cpp create mode 100644 src/FiltersPlugin/FiltersPlugin_OnShapeName.h create mode 100644 src/FiltersPlugin/Test/TestFilter_OnShapeName.py create mode 100755 src/FiltersPlugin/doc/images/selection_byShapeName1.png create mode 100755 src/FiltersPlugin/doc/images/selection_byShapeName2.png create mode 100644 src/FiltersPlugin/filter-OnShapeName.xml diff --git a/src/FiltersPlugin/CMakeLists.txt b/src/FiltersPlugin/CMakeLists.txt index 81f384634..a3938251a 100644 --- a/src/FiltersPlugin/CMakeLists.txt +++ b/src/FiltersPlugin/CMakeLists.txt @@ -31,6 +31,7 @@ SET(PROJECT_HEADERS FiltersPlugin_OnLine.h FiltersPlugin_OnGeometry.h FiltersPlugin_OnPlaneSide.h + FiltersPlugin_OnShapeName.h FiltersPlugin_OppositeToEdge.h FiltersPlugin_RelativeToSolid.h FiltersPlugin_ExternalFaces.h @@ -52,6 +53,7 @@ SET(PROJECT_SOURCES FiltersPlugin_OnLine.cpp FiltersPlugin_OnGeometry.cpp FiltersPlugin_OnPlaneSide.cpp + FiltersPlugin_OnShapeName.cpp FiltersPlugin_OppositeToEdge.cpp FiltersPlugin_RelativeToSolid.cpp FiltersPlugin_ExternalFaces.cpp @@ -83,6 +85,7 @@ SET(XML_RESOURCES filter-OnLine.xml filter-OnPlane.xml filter-OnPlaneSide.xml + filter-OnShapeName.xml filter-OppositeToEdge.xml filter-RelativeToSolid.xml filter-TopoConnectedFaces.xml @@ -101,12 +104,13 @@ SET(TEXT_RESOURCES SOURCE_GROUP ("XML Files" FILES ${XML_RESOURCES}) SOURCE_GROUP ("Resource Files" FILES ${TEXT_RESOURCES}) -ADD_DEFINITIONS(-DFILTERS_EXPORTS ${OpenCASCADE_DEFINITIONS}) +ADD_DEFINITIONS(-DFILTERS_EXPORTS ${OpenCASCADE_DEFINITIONS} ${BOOST_DEFINITIONS}) ADD_LIBRARY(FiltersPlugin SHARED ${PROJECT_SOURCES} ${PROJECT_HEADERS} ${XML_RESOURCES} ${TEXT_RESOURCES}) TARGET_LINK_LIBRARIES(FiltersPlugin ${PROJECT_LIBRARIES}) INCLUDE_DIRECTORIES( ${OpenCASCADE_INCLUDE_DIR} + ${Boost_INCLUDE_DIRS} ${PROJECT_SOURCE_DIR}/src/ModelAPI ${PROJECT_SOURCE_DIR}/src/Config ${PROJECT_SOURCE_DIR}/src/Events @@ -115,6 +119,7 @@ INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/src/GeomDataAPI ${PROJECT_SOURCE_DIR}/src/GeomValidators ${PROJECT_SOURCE_DIR}/src/CollectionPlugin + ${PROJECT_SOURCE_DIR}/src/Locale ) INSTALL(TARGETS FiltersPlugin DESTINATION ${SHAPER_INSTALL_PLUGIN_FILES}) diff --git a/src/FiltersPlugin/FiltersPlugin_OnShapeName.cpp b/src/FiltersPlugin/FiltersPlugin_OnShapeName.cpp new file mode 100644 index 000000000..759ec6b29 --- /dev/null +++ b/src/FiltersPlugin/FiltersPlugin_OnShapeName.cpp @@ -0,0 +1,120 @@ +// Copyright (C) 2014-2023 CEA, EDF +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// 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 +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#include "FiltersPlugin_OnShapeName.h" + +#include +// #include +// #include +// #include +// #include +// #include +// #include +// #include + +#include +#include + +bool FiltersPlugin_OnShapeName::isSupported(GeomAPI_Shape::ShapeType /*theType*/) const +{ + return true; +} + +static bool getShapesName(const GeomShapePtr& theShape, + ResultBodyPtr theResultBody, + std::string& theShapeName) +{ + int nbSubRes = theResultBody->numberOfSubs(); + if(theResultBody->shape()->isSame(theShape) || (nbSubRes == 0 && theResultBody->shape()->isSubShape(theShape))) + { + DataPtr data = theResultBody->data(); + if (data.get()) + { + theShapeName = Locale::Convert::toString(data->name()); + return true; + } + } + + bool aResult(false); + ResultBodyPtr subResult; + for (int i = 0; i < nbSubRes; i++) + { + subResult = theResultBody->subResult(i); + if(getShapesName(theShape, subResult, theShapeName)) + { + aResult = true; + break; + } + } + + return aResult; +} + +bool FiltersPlugin_OnShapeName::isOk(const GeomShapePtr& theShape, const ResultPtr& theResult, + const ModelAPI_FiltersArgs& theArgs) const +{ + AttributePtr anAttr = theArgs.argument("pattern"); + AttributeStringPtr aValue = std::dynamic_pointer_cast(anAttr); + if (!aValue.get()|| !anAttr->isInitialized()) + return false; + std::string aPattern= aValue->value(); + + + ResultBodyPtr aBodyRes = std::dynamic_pointer_cast(theResult); + std::string aShapeName; + if(!getShapesName(theShape, aBodyRes, aShapeName)) + { + return false; + } + + //remove * from both sides of pattern + if(aPattern.back() == '*' && aPattern.front() == '*') + { + aPattern.pop_back(); + aPattern.erase(aPattern.begin()); + } + + bool isFound = false; + if(aPattern.front() == '*') + { + aPattern.erase(aPattern.begin()); + isFound = boost::algorithm::ends_with(aShapeName, aPattern); + } + else if(aPattern.back() == '*') + { + aPattern.pop_back(); + isFound = boost::algorithm::starts_with(aShapeName, aPattern); + } + else + { + isFound = (aShapeName.find(aPattern) != std::string::npos); + } + + return isFound; +} + +std::string FiltersPlugin_OnShapeName::xmlRepresentation() const +{ + return xmlFromFile("filter-OnShapeName.xml"); +} + +void FiltersPlugin_OnShapeName::initAttributes(ModelAPI_FiltersArgs& theArguments) +{ + theArguments.initAttribute("pattern", ModelAPI_AttributeString::typeId()); +} \ No newline at end of file diff --git a/src/FiltersPlugin/FiltersPlugin_OnShapeName.h b/src/FiltersPlugin/FiltersPlugin_OnShapeName.h new file mode 100644 index 000000000..fc1c4807b --- /dev/null +++ b/src/FiltersPlugin/FiltersPlugin_OnShapeName.h @@ -0,0 +1,59 @@ +// Copyright (C) 2014-2023 CEA, EDF +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// 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 +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#ifndef FILTERSPLUGIN_ONSHAPENAME_H_ +#define FILTERSPLUGIN_ONSHAPENAME_H_ + +#include "FiltersPlugin.h" + +#include + +/**\class FiltersPlugin_OnPlaneSide +* \ingroup DataModel +* \brief Filter for objects which lying on the side of selected plane +*/ +class FiltersPlugin_OnShapeName : public ModelAPI_Filter +{ +public: + FiltersPlugin_OnShapeName() : ModelAPI_Filter() {} + + virtual const std::string& name() const + { + static const std::string kName("On shape name"); + return kName; + } + + /// Returns true for face type + virtual bool isSupported(GeomAPI_Shape::ShapeType theType) const override; + + /// This method should contain the filter logic. It returns true if the given shape + /// is accepted by the filter. + /// \param theShape the given shape + /// \param theArgs arguments of the filter + virtual bool isOk(const GeomShapePtr& theShape, const ResultPtr&, + const ModelAPI_FiltersArgs& theArgs) const override; + + /// Returns XML string which represents GUI of the filter + virtual std::string xmlRepresentation() const override; + + /// Initializes arguments of a filter. + virtual void initAttributes(ModelAPI_FiltersArgs& theArguments) override; +}; + +#endif diff --git a/src/FiltersPlugin/FiltersPlugin_Plugin.cpp b/src/FiltersPlugin/FiltersPlugin_Plugin.cpp index e543fbb7c..db12b2ce3 100644 --- a/src/FiltersPlugin/FiltersPlugin_Plugin.cpp +++ b/src/FiltersPlugin/FiltersPlugin_Plugin.cpp @@ -28,6 +28,7 @@ #include "FiltersPlugin_OnLine.h" #include "FiltersPlugin_OnPlane.h" #include "FiltersPlugin_OnPlaneSide.h" +#include "FiltersPlugin_OnShapeName.h" #include "FiltersPlugin_OppositeToEdge.h" #include "FiltersPlugin_Plugin.h" #include "FiltersPlugin_RelativeToSolid.h" @@ -64,6 +65,7 @@ FiltersPlugin_Plugin::FiltersPlugin_Plugin() aFactory->registerFilter("VolumeSize", new FiltersPlugin_VolumeSize); aFactory->registerFilter("FeatureEdges", new FiltersPlugin_FeatureEdges); aFactory->registerFilter("ContinuousFaces", new FiltersPlugin_ContinuousFaces); + aFactory->registerFilter("OnShapeName", new FiltersPlugin_OnShapeName); Config_ModuleReader::loadScript("FiltersPlugin_TopoConnectedFaces"); diff --git a/src/FiltersPlugin/FiltersPlugin_msg_en.ts b/src/FiltersPlugin/FiltersPlugin_msg_en.ts index e20f87ad1..2d24466ef 100644 --- a/src/FiltersPlugin/FiltersPlugin_msg_en.ts +++ b/src/FiltersPlugin/FiltersPlugin_msg_en.ts @@ -94,6 +94,10 @@ Opposite to an edge Opposite to an edge + + On shape name + On shape name + Topologically connected faces Topologically connected faces @@ -307,4 +311,13 @@ + + + OnShapeName + + Search pattern: + Search pattern: + + + diff --git a/src/FiltersPlugin/FiltersPlugin_msg_fr.ts b/src/FiltersPlugin/FiltersPlugin_msg_fr.ts index eb39232e5..53ab64b01 100644 --- a/src/FiltersPlugin/FiltersPlugin_msg_fr.ts +++ b/src/FiltersPlugin/FiltersPlugin_msg_fr.ts @@ -111,6 +111,10 @@ Opposite to an edge En face d'un bord + + On shape name + Sur le nom des shapes + Topologically connected faces Faces topologiquement connectés @@ -403,4 +407,13 @@ + + + OnShapeName + + Search pattern: + Modèle de recherche: + + + diff --git a/src/FiltersPlugin/Test/TestFilter_OnShapeName.py b/src/FiltersPlugin/Test/TestFilter_OnShapeName.py new file mode 100644 index 000000000..a1262ddf6 --- /dev/null +++ b/src/FiltersPlugin/Test/TestFilter_OnShapeName.py @@ -0,0 +1,197 @@ +# Copyright (C) 2014-2023 CEA, EDF +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# 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 +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +import sys +import salome + +salome.salome_init() +import salome_notebook +notebook = salome_notebook.NoteBook() +sys.path.insert(0, r'/home/eksu/S2') + +### +### SHAPER component +### + +from SketchAPI import * + +from salome.shaper import model + +model.begin() +partSet = model.moduleDocument() + +### Create Part +Part_1 = model.addPart(partSet) +Part_1_doc = Part_1.document() +model.addParameter(Part_1_doc, "rayon", '10.') +model.addParameter(Part_1_doc, "hauteur", '2.*rayon') + +### Create Sketch +Sketch_1 = model.addSketch(Part_1_doc, model.defaultPlane("XOY")) + +### Create SketchProjection +SketchProjection_1 = Sketch_1.addProjection(model.selection("VERTEX", "PartSet/Origin"), False) +SketchPoint_1 = SketchProjection_1.createdFeature() + +### Create SketchCircle +SketchCircle_1 = Sketch_1.addCircle(0, 0, 10) +Sketch_1.setCoincident(SketchPoint_1.result(), SketchCircle_1.center()) +Sketch_1.setRadius(SketchCircle_1.results()[1], "rayon ") +model.do() + +### Create Extrusion +Extrusion_1 = model.addExtrusion(Part_1_doc, [model.selection("COMPOUND", "all-in-Sketch_1")], model.selection(), "hauteur ", "hauteur/4.", "Faces|Wires") + +### Create Sketch +Sketch_2 = model.addSketch(Part_1_doc, model.standardPlane("XOY")) + +### Create SketchLine +SketchLine_1 = Sketch_2.addLine(12.5, -12.5, -12.5, -12.5) + +### Create SketchProjection +SketchProjection_2 = Sketch_2.addProjection(model.selection("VERTEX", "PartSet/Origin"), False) +SketchPoint_2 = SketchProjection_2.createdFeature() + +### Create SketchLine +SketchLine_2 = Sketch_2.addLine(-12.5, -12.5, -12.5, 12.5) + +### Create SketchLine +SketchLine_3 = Sketch_2.addLine(-12.5, 12.5, 12.5, 12.5) + +### Create SketchLine +SketchLine_4 = Sketch_2.addLine(12.5, 12.5, 12.5, -12.5) +Sketch_2.setCoincident(SketchLine_4.endPoint(), SketchLine_1.startPoint()) +Sketch_2.setCoincident(SketchLine_1.endPoint(), SketchLine_2.startPoint()) +Sketch_2.setCoincident(SketchLine_2.endPoint(), SketchLine_3.startPoint()) +Sketch_2.setCoincident(SketchLine_3.endPoint(), SketchLine_4.startPoint()) + +### Create SketchLine +SketchLine_5 = Sketch_2.addLine(12.5, -12.5, -12.5, 12.5) +SketchLine_5.setAuxiliary(True) + +### Create SketchLine +SketchLine_6 = Sketch_2.addLine(-12.5, -12.5, 12.5, 12.5) +SketchLine_6.setAuxiliary(True) +Sketch_2.setCoincident(SketchLine_1.startPoint(), SketchLine_5.startPoint()) +Sketch_2.setCoincident(SketchLine_2.startPoint(), SketchLine_6.startPoint()) +Sketch_2.setCoincident(SketchLine_3.startPoint(), SketchLine_5.endPoint()) +Sketch_2.setCoincident(SketchLine_4.startPoint(), SketchLine_6.endPoint()) +Sketch_2.setCoincident(SketchAPI_Point(SketchPoint_2).coordinates(), SketchLine_5.result()) +Sketch_2.setCoincident(SketchAPI_Point(SketchPoint_2).coordinates(), SketchLine_6.result()) +Sketch_2.setHorizontal(SketchLine_1.result()) +Sketch_2.setVertical(SketchLine_2.result()) +Sketch_2.setHorizontal(SketchLine_3.result()) +Sketch_2.setVertical(SketchLine_4.result()) +Sketch_2.setLength(SketchLine_3.result(), "2.5*rayon") +Sketch_2.setEqual(SketchLine_3.result(), SketchLine_2.result()) +model.do() + +### Create Extrusion +Extrusion_2 = model.addExtrusion(Part_1_doc, [model.selection("COMPOUND", "all-in-Sketch_2")], model.selection(), 0, "2.*rayon", "Faces|Wires") + +### Create Sketch +Sketch_3 = model.addSketch(Part_1_doc, model.standardPlane("XOY")) + +### Create SketchLine +SketchLine_7 = Sketch_3.addLine(-4.930380657631324e-32, -6, -4.930380657631324e-32, 6) + +### Create SketchProjection +SketchProjection_3 = Sketch_3.addProjection(model.selection("VERTEX", "PartSet/Origin"), False) +SketchPoint_3 = SketchProjection_3.createdFeature() +Sketch_3.setMiddlePoint(SketchAPI_Point(SketchPoint_3).coordinates(), SketchLine_7.result()) +Sketch_3.setVertical(SketchLine_7.result()) +Sketch_3.setLength(SketchLine_7.result(), "1.2*rayon") +model.do() + +### Create Extrusion +Extrusion_3 = model.addExtrusion(Part_1_doc, [model.selection("COMPOUND", "all-in-Sketch_3")], model.selection("EDGE", "PartSet/OZ"), "hauteur*1.4", "hauteur*0.4", "Edges") + +### Create Extrusion +Extrusion_4 = model.addExtrusion(Part_1_doc, [model.selection("VERTEX", "PartSet/Origin")], model.selection("EDGE", "PartSet/OY"), "rayon*1.6", "rayon*1.6") + +### Create Translation +Translation_1 = model.addTranslation(Part_1_doc, [model.selection("COMPOUND", "all-in-Extrusion_4")], axis = model.selection("EDGE", "PartSet/OZ"), distance = "hauteur*0.5", keepSubResults = True) + +### Create Partition +Partition_1_objects = [model.selection("COMPOUND", "all-in-Extrusion_1"), + model.selection("COMPOUND", "all-in-Extrusion_2"), + model.selection("COMPOUND", "all-in-Extrusion_3"), + model.selection("COMPOUND", "all-in-Translation_1")] +Partition_1 = model.addPartition(Part_1_doc, Partition_1_objects, keepSubResults = True) +Partition_1.result().subResult(0).setName("Volumes") +Partition_1.result().subResult(0).subResult(0).setName("Cylindre bas") +Partition_1.result().subResult(0).subResult(1).setName("Cylindre haut") +Partition_1.result().subResult(0).subResult(2).setName("Cube Creux") +Partition_1.result().subResult(1).setName("Plaque") +Partition_1.result().subResult(2).setName("Poutre 1") +Partition_1.result().subResult(3).setName("Poutre 2") + +### Create Group +Group_1_objects = [model.selection("VERTEX", "[Extrusion_2_1/Generated_Face&Sketch_2/SketchLine_4][Extrusion_2_1/Generated_Face&Sketch_2/SketchLine_3][Extrusion_2_1/From_Face]"), + model.selection("VERTEX", "[Extrusion_2_1/Generated_Face&Sketch_2/SketchLine_4][Extrusion_2_1/Generated_Face&Sketch_2/SketchLine_3][Cube Creux/Modified_Face&Extrusion_2_1/To_Face]"), + model.selection("VERTEX", "[Extrusion_2_1/Generated_Face&Sketch_2/SketchLine_4][Extrusion_2_1/Generated_Face&Sketch_2/SketchLine_1][Extrusion_2_1/From_Face]"), + model.selection("VERTEX", "[Extrusion_2_1/Generated_Face&Sketch_2/SketchLine_4][Extrusion_2_1/Generated_Face&Sketch_2/SketchLine_1][Cube Creux/Modified_Face&Extrusion_2_1/To_Face]"), + model.selection("VERTEX", "[Extrusion_2_1/Generated_Face&Sketch_2/SketchLine_3][Extrusion_2_1/From_Face][Extrusion_2_1/Generated_Face&Sketch_2/SketchLine_2]"), + model.selection("VERTEX", "[Extrusion_2_1/Generated_Face&Sketch_2/SketchLine_3][Cube Creux/Modified_Face&Extrusion_2_1/To_Face][Extrusion_2_1/Generated_Face&Sketch_2/SketchLine_2]"), + model.selection("VERTEX", "[Extrusion_2_1/Generated_Face&Sketch_2/SketchLine_1][Extrusion_2_1/From_Face][Extrusion_2_1/Generated_Face&Sketch_2/SketchLine_2]"), + model.selection("VERTEX", "[Extrusion_2_1/Generated_Face&Sketch_2/SketchLine_1][Cube Creux/Modified_Face&Extrusion_2_1/To_Face][Extrusion_2_1/Generated_Face&Sketch_2/SketchLine_2]"), + model.selection("VERTEX", "[Extrusion_3_1/From_Edge]e[Cube Creux/Modified_Edge&Sketch_3/SketchLine_7_StartVertex]e"), + model.selection("VERTEX", "[Extrusion_3_1/From_Edge]e[Cube Creux/Modified_Edge&Sketch_3/SketchLine_7_EndVertex]e"), model.filters(Part_1_doc, [model.addFilter(name = "OnShapeName", args = ["Cube"])])] +Group_1 = model.addGroup(Part_1_doc, "Vertices", Group_1_objects) +Group_1.setName("CubeVertices_1") +Group_1.result().setName("CubeVertices_1") + +### Create Group +Group_2_objects = [model.selection("EDGE", "(Cylindre haut/Generated_Edge&Extrusion_2_1/To_Face&Sketch_1/SketchCircle_1_2)([Cylindre haut/Modified_Face&Sketch_1/SketchCircle_1_2][Cylindre haut/Modified_Face&Extrusion_1_1/To_Face])"), + model.selection("EDGE", "[Cylindre haut/Modified_Face&Sketch_1/SketchCircle_1_2][Cylindre haut/Modified_Face&Extrusion_1_1/To_Face]"), + model.selection("EDGE", "Cylindre haut/Generated_Edge&Sketch_3/Sketch_3&Extrusion_1_1/To_Face"), + model.selection("EDGE", "Cylindre haut/Modified_Edge&Sketch_3/SketchLine_7_EndVertex&new_weak_name_1"), + model.selection("EDGE", "Cylindre haut/Modified_Edge&PartSet/Origin/Origin&new_weak_name_2"), + model.selection("EDGE", "Cylindre haut/Modified_Edge&Sketch_3/SketchLine_7_StartVertex&new_weak_name_1"), + model.selection("EDGE", "Cylindre haut/Modified_Edge&Sketch_3/SketchLine_7_EndVertex&new_weak_name_2"), + model.selection("EDGE", "Cylindre haut/Modified_Edge&Sketch_3/SketchLine_7_StartVertex&new_weak_name_2"), + model.selection("EDGE", "Cylindre haut/Modified_Edge&PartSet/Origin/Origin&new_weak_name_1"), + model.selection("EDGE", "Cylindre haut/Modified_Edge&PartSet/Origin/Origin&new_weak_name_3"), + model.selection("SOLID", "Cylindre bas"), model.filters(Part_1_doc, [model.addFilter(name = "OnShapeName", args = ["Cyl"])])] +Group_2 = model.addGroup(Part_1_doc, "Edges", Group_2_objects) +Group_2.setName("CylEdges_2") +Group_2.result().setName("CylEdges_2") + +### Create Group +Group_3 = model.addGroup(Part_1_doc, "Faces", [model.selection("FACE", "Plaque"), model.filters(Part_1_doc, [model.addFilter(name = "OnShapeName", args = ["Plaq"])])]) +Group_3.setName("Plaque_3") +Group_3.result().setName("Plaque_3") + +### Create Group +Group_4 = model.addGroup(Part_1_doc, "Solids", [model.selection("SOLID", "Cylindre haut"), model.selection("SOLID", "Cylindre bas"), model.filters(Part_1_doc, [model.addFilter(name = "OnShapeName", args = ["Cyl"])])]) +Group_4.setName("Cyllindres_4") +Group_4.result().setName("Cyllindres_4") + +model.end() + +### +### SHAPERSTUDY component +### + +model.publishToShaperStudy() +import SHAPERSTUDY +Partition_1_1, CubeVertices_1, CylEdges_2, Plaque_3, Cyllindres_4, = SHAPERSTUDY.shape(model.featureStringId(Partition_1)) + +if salome.sg.hasDesktop(): + salome.sg.updateObjBrowser() diff --git a/src/FiltersPlugin/Test/TestFilters_Supported.py b/src/FiltersPlugin/Test/TestFilters_Supported.py index e6b493435..b2ff5bb3c 100644 --- a/src/FiltersPlugin/Test/TestFilters_Supported.py +++ b/src/FiltersPlugin/Test/TestFilters_Supported.py @@ -39,15 +39,16 @@ FILTER_FACE_SIZE = "FaceSize" FILTER_VOLUME_SIZE = "VolumeSize" FILTER_FEATURE_EDGES = "FeatureEdges" FILTER_CONTINUOUS_FACES= "ContinuousFaces" +FILTER_ON_SHAPE_NAME = "OnShapeName" # Reference data (supported filters) for each type of shape Reference = { - GeomAPI_Shape.VERTEX : [FILTER_BELONGS_TO, FILTER_ON_PLANE, FILTER_ON_LINE, FILTER_ON_PLANE_SIDE, FILTER_RELATIVE_TO_SOLID], - GeomAPI_Shape.EDGE : [FILTER_BELONGS_TO, FILTER_ON_PLANE, FILTER_ON_LINE, FILTER_ON_GEOMETRY, FILTER_ON_PLANE_SIDE, FILTER_OPPOSITE_TO_EDGE, FILTER_RELATIVE_TO_SOLID, FILTER_EDGE_SIZE, FILTER_FEATURE_EDGES], - GeomAPI_Shape.WIRE : [FILTER_BELONGS_TO, FILTER_ON_PLANE, FILTER_ON_PLANE_SIDE, FILTER_RELATIVE_TO_SOLID], - GeomAPI_Shape.FACE : [FILTER_BELONGS_TO, FILTER_ON_PLANE, FILTER_ON_GEOMETRY, FILTER_ON_PLANE_SIDE, FILTER_RELATIVE_TO_SOLID, FILTER_EXTERNAL_FACES, FILTER_HORIZONTAL_FACES, FILTER_VERTICAL_FACES, FILTER_CONNECTED_FACES, FILTER_FACE_SIZE, FILTER_CONTINUOUS_FACES], - GeomAPI_Shape.SHELL : [FILTER_BELONGS_TO, FILTER_ON_PLANE, FILTER_ON_PLANE_SIDE, FILTER_RELATIVE_TO_SOLID], - GeomAPI_Shape.SOLID : [FILTER_BELONGS_TO, FILTER_ON_PLANE_SIDE, FILTER_VOLUME_SIZE], + GeomAPI_Shape.VERTEX : [FILTER_BELONGS_TO, FILTER_ON_PLANE, FILTER_ON_LINE, FILTER_ON_PLANE_SIDE, FILTER_RELATIVE_TO_SOLID, FILTER_ON_SHAPE_NAME], + GeomAPI_Shape.EDGE : [FILTER_BELONGS_TO, FILTER_ON_PLANE, FILTER_ON_LINE, FILTER_ON_GEOMETRY, FILTER_ON_PLANE_SIDE, FILTER_OPPOSITE_TO_EDGE, FILTER_RELATIVE_TO_SOLID, FILTER_EDGE_SIZE, FILTER_FEATURE_EDGES, FILTER_ON_SHAPE_NAME], + GeomAPI_Shape.WIRE : [FILTER_BELONGS_TO, FILTER_ON_PLANE, FILTER_ON_PLANE_SIDE, FILTER_RELATIVE_TO_SOLID, FILTER_ON_SHAPE_NAME], + GeomAPI_Shape.FACE : [FILTER_BELONGS_TO, FILTER_ON_PLANE, FILTER_ON_GEOMETRY, FILTER_ON_PLANE_SIDE, FILTER_RELATIVE_TO_SOLID, FILTER_EXTERNAL_FACES, FILTER_HORIZONTAL_FACES, FILTER_VERTICAL_FACES, FILTER_CONNECTED_FACES, FILTER_FACE_SIZE, FILTER_CONTINUOUS_FACES, FILTER_ON_SHAPE_NAME], + GeomAPI_Shape.SHELL : [FILTER_BELONGS_TO, FILTER_ON_PLANE, FILTER_ON_PLANE_SIDE, FILTER_RELATIVE_TO_SOLID, FILTER_ON_SHAPE_NAME], + GeomAPI_Shape.SOLID : [FILTER_BELONGS_TO, FILTER_ON_PLANE_SIDE, FILTER_VOLUME_SIZE, FILTER_ON_SHAPE_NAME], } model.begin() diff --git a/src/FiltersPlugin/doc/FiltersPlugin.rst b/src/FiltersPlugin/doc/FiltersPlugin.rst index 3d9bbb492..00c0c2791 100644 --- a/src/FiltersPlugin/doc/FiltersPlugin.rst +++ b/src/FiltersPlugin/doc/FiltersPlugin.rst @@ -179,3 +179,22 @@ This algorithm finds all the faces topologically connected the argument selected - **Algorithm:** - If a point of an edge is selected as an argument, the result is all faces that contain this argument.If a face is selected, the result is all faces that have shared edges or vertices with this selection. - If “propagation” flag is enabled (it is disabled by default), the algorithm becomes recursive: all connected faces are added to the results. So, for the solid shape there will be all faces except internal-volumes faces, not connected to any external faces. + +**On shape name** + +- **Result type:** Any +- **Arguments:** A string value, representing a pattern for searching by result name. The pattern can be the full name of result or its part. Pattern is case sensitive. There are several options for the pattern input: + + - **Pattern*** to search for results with names matching from the beginning strictly. + - ***Pattern** to search for results with names matching from the ending strictly. + - **Pattern** to search for results with names containing this regular expression. + - ***Pattern*** to search for results with names containing this regular expression. +- **Algorithm:** + - Returns objects that contain a pattern in their names or subobjects of these objects. + - For example, if we have in the result a shape with the name “cube” and we want to select all the edges according to the pattern "cube", then we will get all the edges of the object with name "cube". + - There are two examples: selecting all edges belonging to objects from the result with a name starting with "Cyl" and selecting all vertices belonging to objects from the result with a name containing pattern "Cube": +.. figure:: images/selection_byShapeName1.png + :align: center + +.. figure:: images/selection_byShapeName2.png + :align: center diff --git a/src/FiltersPlugin/doc/images/selection_byShapeName1.png b/src/FiltersPlugin/doc/images/selection_byShapeName1.png new file mode 100755 index 0000000000000000000000000000000000000000..4cd7a266c2598716ff56fe6cb831d5f822f06680 GIT binary patch literal 35225 zcmbSz2{_c>|L<6`Z;=$)l8DeEYV3O@TMK0^D(hIsIv5c`D2hsUq3q0zosjUAEz2-t zERiL~Zmh#SpT56)@Bco}eeUyr?mSP$%;$6FoX>fm_j$cvuh%Kc*iet1g`WimgR$SZ zu6-K@qo;+zXf>G_z&qyoPo}^>G+wv$G-1Wvr{=*g^!6GC8ZcN{JnR0WBj9&t_v;V5 zU@&eZ^oM5bsjwdm7A1Q_TjQ>uHJQZt@zfJ)+v@ld=?JYTmnNq;SHSY~VtEZm+UO7# zNu2=3`Fo$TX`_#Q+Nm_wo)6s^b7m4(XL{aCCmL?K*RwU^ui)iX;fs3WX78)IjH0gn zP`*r*L#^+1UA|n+oQ|m!xa3^6({(nGyBl-`2K!^J>Ouqkpw3{-1pNyW(UPS9`@<{I zV_;z5)y~E8_Y&A+rtrUSz%HHH5=!R$foYvpM8$V9LYJvOy>R;Phaqg4Tz`L1kNEGj z2%5PnD-6Cm#9VQ_SGxK0gWT@zB!l$omnmte?nCoCEq;nBb~EOb&6ih5@~`eyZ>i>T zy?PQO_mDEyHpvFQ$vBLGGoXJ)FyP&9FW;J-bNy}=9X9A5160h9+H`}IYOTCrk(jIU zP@mKd`qK_ea?|*`KVNV+yL#_Jn@h=q+O8W%VN51}M{m5Id&{QhgGIbYe=K|QaPKuC z&;Cn2uhz*eJ#s9wuzv?+%y%{@*!AiY1!P>JrP9{Nt>GUteXjiKG_y?YSG$kGHmsFw z(qXWi?m(?W+c5jR>Xd`r9a?9nx*pZ-4O2zVfdorgKEq8l-M`N{Um!ggTZyf7o6EI# zhX2!$7F?RbaDf#(X~{6kK^q-tsQ=|m`tv(ayJW55dhR7^(Ortuq6>LU-P9qb z+YG~C8OrPI^*mo(G-Z6W0R0)j?lEZI-3zRnFypSkM{V zC~W5B@2VUga?8S®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 C%+JpN literal 0 HcmV?d00001 diff --git a/src/FiltersPlugin/doc/images/selection_byShapeName2.png b/src/FiltersPlugin/doc/images/selection_byShapeName2.png new file mode 100755 index 0000000000000000000000000000000000000000..69827e564f314f77d1052638b67c9be54f6d9da4 GIT binary patch literal 52200 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 + + + diff --git a/src/FiltersPlugin/tests.set b/src/FiltersPlugin/tests.set index f3a894b59..64a44e684 100644 --- a/src/FiltersPlugin/tests.set +++ b/src/FiltersPlugin/tests.set @@ -124,4 +124,5 @@ SET(TEST_NAMES TestFilter_FeatureEdges.py TestFilter_ContinuousFaces.py TestFilter_VolumeSize.py + TestFilter_OnShapeName.py ) -- 2.39.2