SHAPER  9.12.0
FeaturesPlugin_CompositeSketch.h
1 // Copyright (C) 2014-2023 CEA, EDF
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19 
20 #ifndef FeaturesPlugin_CompositeSketch_H_
21 #define FeaturesPlugin_CompositeSketch_H_
22 
23 #include "FeaturesPlugin.h"
24 
25 #include <ModelAPI_CompositeFeature.h>
26 
27 #include <ModelAPI_ResultBody.h>
28 
33 {
34 public:
36  inline static const std::string& SKETCH_ID()
37  {
38  static const std::string MY_SKETCH_ID("sketch");
39  return MY_SKETCH_ID;
40  }
41 
43  inline static const std::string& BASE_OBJECTS_ID()
44  {
45  static const std::string MY_BASE_OBJECTS_ID("base");
46  return MY_BASE_OBJECTS_ID;
47  }
48 
50  FEATURESPLUGIN_EXPORT virtual std::shared_ptr<ModelAPI_Feature> addFeature(std::string theID);
51 
53  FEATURESPLUGIN_EXPORT virtual int numberOfSubs(bool forTree = false) const;
54 
56  FEATURESPLUGIN_EXPORT virtual
57  std::shared_ptr<ModelAPI_Feature> subFeature(const int theIndex, bool forTree = false);
58 
60  FEATURESPLUGIN_EXPORT virtual int subFeatureId(const int theIndex) const;
61 
63  FEATURESPLUGIN_EXPORT virtual bool isSub(ObjectPtr theObject) const;
64 
67  FEATURESPLUGIN_EXPORT virtual void removeFeature(std::shared_ptr<ModelAPI_Feature> theFeature);
68 
69 protected:
70  enum InitFlags {
71  InitSketchLauncher = 1 << 0,
72  InitBaseObjectsList = 1 << 1
73  };
74 
76 
78  void initCompositeSketchAttribtues(const int theInitFlags);
79 
83  void getBaseShapes(ListOfShape& theBaseShapesList, const bool theIsMakeShells = true);
84 
86  void storeResult(const GeomShapePtr theBaseShape,
87  const std::shared_ptr<GeomAlgoAPI_MakeShape> theMakeShape,
88  const int theIndex = 0);
89 
91  void storeGenerationHistory(ResultBodyPtr theResultBody,
92  const GeomShapePtr theBaseShape,
93  const std::shared_ptr<GeomAlgoAPI_MakeShape> theMakeShape);
94 
96  void storeShapes(const std::shared_ptr<GeomAlgoAPI_MakeShape> theMakeShape,
97  ResultBodyPtr theResultBody,
98  const GeomAPI_Shape::ShapeType theBaseShapeType,
99  const ListOfShape& theShapes,
100  const std::string theName);
101 
102 private:
103  std::string myCurrentSelectionType; //< type of selection (vertex, edge or face)
104 };
105 
106 #endif
Interface for the composite sketch feature.
Definition: FeaturesPlugin_CompositeSketch.h:33
static const std::string & BASE_OBJECTS_ID()
Attribute name of base objects.
Definition: FeaturesPlugin_CompositeSketch.h:43
void getBaseShapes(ListOfShape &theBaseShapesList, const bool theIsMakeShells=true)
Returns list of base shapes.
Definition: FeaturesPlugin_CompositeSketch.cpp:137
virtual void removeFeature(std::shared_ptr< ModelAPI_Feature > theFeature)
This method to inform that sub-feature is removed and must be removed from the internal data structur...
Definition: FeaturesPlugin_CompositeSketch.cpp:126
void initCompositeSketchAttribtues(const int theInitFlags)
Initializes composite sketch attributes.
Definition: FeaturesPlugin_CompositeSketch.cpp:44
void storeShapes(const std::shared_ptr< GeomAlgoAPI_MakeShape > theMakeShape, ResultBodyPtr theResultBody, const GeomAPI_Shape::ShapeType theBaseShapeType, const ListOfShape &theShapes, const std::string theName)
Used to store from and to shapes: generated, or in common modified tag.
Definition: FeaturesPlugin_CompositeSketch.cpp:231
void storeResult(const GeomShapePtr theBaseShape, const std::shared_ptr< GeomAlgoAPI_MakeShape > theMakeShape, const int theIndex=0)
Stores result of generation.
Definition: FeaturesPlugin_CompositeSketch.cpp:149
virtual std::shared_ptr< ModelAPI_Feature > subFeature(const int theIndex, bool forTree=false)
Definition: FeaturesPlugin_CompositeSketch.cpp:87
virtual bool isSub(ObjectPtr theObject) const
Definition: FeaturesPlugin_CompositeSketch.cpp:113
virtual std::shared_ptr< ModelAPI_Feature > addFeature(std::string theID)
Appends a feature to the sketch sub-elements container.
Definition: FeaturesPlugin_CompositeSketch.cpp:67
virtual int subFeatureId(const int theIndex) const
Definition: FeaturesPlugin_CompositeSketch.cpp:99
virtual int numberOfSubs(bool forTree=false) const
Definition: FeaturesPlugin_CompositeSketch.cpp:80
void storeGenerationHistory(ResultBodyPtr theResultBody, const GeomShapePtr theBaseShape, const std::shared_ptr< GeomAlgoAPI_MakeShape > theMakeShape)
Stores generation history.
Definition: FeaturesPlugin_CompositeSketch.cpp:166
static const std::string & SKETCH_ID()
Attribute name of sketch feature.
Definition: FeaturesPlugin_CompositeSketch.h:36
ShapeType
Shape type enum.
Definition: GeomAPI_Shape.h:46
Feature that consists of other features: like sketcher with edges inside.
Definition: ModelAPI_CompositeFeature.h:33