1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D -->
3 // File: FeaturesAPI_Extrusion.h
4 // Created: 09 June 2016
5 // Author: Dmitry Bobylev
7 #ifndef FeaturesAPI_Extrusion_H_
8 #define FeaturesAPI_Extrusion_H_
10 #include "FeaturesAPI.h"
12 #include <FeaturesPlugin_Extrusion.h>
14 #include <ModelHighAPI_Interface.h>
15 #include <ModelHighAPI_Macro.h>
17 class ModelHighAPI_Double;
18 class ModelHighAPI_Selection;
20 /// \class FeaturesAPI_Extrusion
21 /// \ingroup CPPHighAPI
22 /// \brief Interface for Extrusion feature.
23 class FeaturesAPI_Extrusion: public ModelHighAPI_Interface
26 /// Constructor without values.
28 explicit FeaturesAPI_Extrusion(const std::shared_ptr<ModelAPI_Feature>& theFeature);
30 /// Constructor with values.
32 explicit FeaturesAPI_Extrusion(const std::shared_ptr<ModelAPI_Feature>& theFeature,
33 const std::list<ModelHighAPI_Selection>& theBaseObjects,
34 const ModelHighAPI_Double& theSize);
36 /// Constructor with values.
38 explicit FeaturesAPI_Extrusion(const std::shared_ptr<ModelAPI_Feature>& theFeature,
39 const std::list<ModelHighAPI_Selection>& theBaseObjects,
40 const ModelHighAPI_Selection& theDirection,
41 const ModelHighAPI_Double& theSize);
42 /// Constructor with values.
44 explicit FeaturesAPI_Extrusion(const std::shared_ptr<ModelAPI_Feature>& theFeature,
45 const std::list<ModelHighAPI_Selection>& theBaseObjects,
46 const ModelHighAPI_Double& theToSize,
47 const ModelHighAPI_Double& theFromSize);
49 /// Constructor with values.
51 explicit FeaturesAPI_Extrusion(const std::shared_ptr<ModelAPI_Feature>& theFeature,
52 const std::list<ModelHighAPI_Selection>& theBaseObjects,
53 const ModelHighAPI_Selection& theDirection,
54 const ModelHighAPI_Double& theToSize,
55 const ModelHighAPI_Double& theFromSize);
57 /// Constructor with values.
59 explicit FeaturesAPI_Extrusion(const std::shared_ptr<ModelAPI_Feature>& theFeature,
60 const std::list<ModelHighAPI_Selection>& theBaseObjects,
61 const ModelHighAPI_Selection& theToObject,
62 const ModelHighAPI_Double& theToOffset,
63 const ModelHighAPI_Selection& theFromObject,
64 const ModelHighAPI_Double& theFromOffset);
66 /// Constructor with values.
68 explicit FeaturesAPI_Extrusion(const std::shared_ptr<ModelAPI_Feature>& theFeature,
69 const std::list<ModelHighAPI_Selection>& theBaseObjects,
70 const ModelHighAPI_Selection& theDirection,
71 const ModelHighAPI_Selection& theToObject,
72 const ModelHighAPI_Double& theToOffset,
73 const ModelHighAPI_Selection& theFromObject,
74 const ModelHighAPI_Double& theFromOffset);
78 virtual ~FeaturesAPI_Extrusion();
80 INTERFACE_10(FeaturesPlugin_Extrusion::ID(),
81 baseObjects, FeaturesPlugin_Extrusion::BASE_OBJECTS_ID(), ModelAPI_AttributeSelectionList, /** Base objects */,
82 creationMethod, FeaturesPlugin_Extrusion::CREATION_METHOD(), ModelAPI_AttributeString, /** Creation method */,
83 toSize, FeaturesPlugin_Extrusion::TO_SIZE_ID(), ModelAPI_AttributeDouble, /** To size */,
84 fromSize, FeaturesPlugin_Extrusion::FROM_SIZE_ID(), ModelAPI_AttributeDouble, /** From size */,
85 toObject, FeaturesPlugin_Extrusion::TO_OBJECT_ID(), ModelAPI_AttributeSelection, /** To object */,
86 toOffset, FeaturesPlugin_Extrusion::TO_OFFSET_ID(), ModelAPI_AttributeDouble, /** To offset */,
87 fromObject, FeaturesPlugin_Extrusion::FROM_OBJECT_ID(), ModelAPI_AttributeSelection, /** From object */,
88 fromOffset, FeaturesPlugin_Extrusion::FROM_OFFSET_ID(), ModelAPI_AttributeDouble, /** From offset */,
89 direction, FeaturesPlugin_Extrusion::DIRECTION_OBJECT_ID(), ModelAPI_AttributeSelection, /** Direction */,
90 sketchLauncher, FeaturesPlugin_Extrusion::SKETCH_ID(), ModelAPI_AttributeReference, /** Sketch launcher */)
92 /// Modify base attribute of the feature.
94 void setBase(const std::list<ModelHighAPI_Selection>& theBaseObjects);
96 /// Modify direction_object attribute of the feature.
98 void setDirection(const ModelHighAPI_Selection& theDirection);
100 /// Modify CreationMethod, to_size, from_size attributes of the feature.
102 void setSizes(const ModelHighAPI_Double& theToSize, const ModelHighAPI_Double& theFromSize);
104 /// Modify creation_method, to_size, from_size attributes of the feature.
106 void setSize(const ModelHighAPI_Double& theSize);
108 /// Modify creation_method, to_object, to_offset, from_object, from_offset attributes of the feature.
110 void setPlanesAndOffsets(const ModelHighAPI_Selection& theToObject,
111 const ModelHighAPI_Double& theToOffset,
112 const ModelHighAPI_Selection& theFromObject,
113 const ModelHighAPI_Double& theFromOffset);
115 /// Dump wrapped feature
117 virtual void dump(ModelHighAPI_Dumper& theDumper) const;
120 /// Pointer on Extrusion object.
121 typedef std::shared_ptr<FeaturesAPI_Extrusion> ExtrusionPtr;
123 /// \ingroup CPPHighAPI
124 /// \brief Create Extrusion feature.
126 ExtrusionPtr addExtrusion(const std::shared_ptr<ModelAPI_Document>& thePart,
127 const std::list<ModelHighAPI_Selection>& theBaseObjects,
128 const ModelHighAPI_Double& theSize);
130 /// \ingroup CPPHighAPI
131 /// \brief Create Extrusion feature.
133 ExtrusionPtr addExtrusion(const std::shared_ptr<ModelAPI_Document>& thePart,
134 const std::list<ModelHighAPI_Selection>& theBaseObjects,
135 const ModelHighAPI_Selection& theDirection,
136 const ModelHighAPI_Double& theSize);
138 /// \ingroup CPPHighAPI
139 /// \brief Create Extrusion feature.
141 ExtrusionPtr addExtrusion(const std::shared_ptr<ModelAPI_Document>& thePart,
142 const std::list<ModelHighAPI_Selection>& theBaseObjects,
143 const ModelHighAPI_Double& theToSize,
144 const ModelHighAPI_Double& theFromSize);
146 /// \ingroup CPPHighAPI
147 /// \brief Create Extrusion feature.
149 ExtrusionPtr addExtrusion(const std::shared_ptr<ModelAPI_Document>& thePart,
150 const std::list<ModelHighAPI_Selection>& theBaseObjects,
151 const ModelHighAPI_Selection& theDirection,
152 const ModelHighAPI_Double& theToSize,
153 const ModelHighAPI_Double& theFromSize);
155 /// \ingroup CPPHighAPI
156 /// \brief Create Extrusion feature.
158 ExtrusionPtr addExtrusion(const std::shared_ptr<ModelAPI_Document>& thePart,
159 const std::list<ModelHighAPI_Selection>& theBaseObjects,
160 const ModelHighAPI_Selection& theToObject,
161 const ModelHighAPI_Double& theToOffset,
162 const ModelHighAPI_Selection& theFromObject,
163 const ModelHighAPI_Double& theFromOffset);
165 /// \ingroup CPPHighAPI
166 /// \brief Create Extrusion feature.
168 ExtrusionPtr addExtrusion(const std::shared_ptr<ModelAPI_Document>& thePart,
169 const std::list<ModelHighAPI_Selection>& theBaseObjects,
170 const ModelHighAPI_Selection& theDirection,
171 const ModelHighAPI_Selection& theToObject,
172 const ModelHighAPI_Double& theToOffset,
173 const ModelHighAPI_Selection& theFromObject,
174 const ModelHighAPI_Double& theFromOffset);
176 #endif // FeaturesAPI_Extrusion_H_