SHAPER 9.16.0
FeaturesPlugin_CompositeSketch.h
1// Copyright (C) 2014-2026 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{
34public:
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
69protected:
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
102private:
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
void getBaseShapes(ListOfShape &theBaseShapesList, const bool theIsMakeShells=true)
Returns list of base shapes.
Definition: FeaturesPlugin_CompositeSketch.cpp:137
static const std::string & BASE_OBJECTS_ID()
Attribute name of base objects.
Definition: FeaturesPlugin_CompositeSketch.h:43
static const std::string & SKETCH_ID()
Attribute name of sketch feature.
Definition: FeaturesPlugin_CompositeSketch.h:36
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
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