1 // Copyright (C) 2014-2019 CEA/DEN, EDF R&D
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.
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.
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
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20 #ifndef FeaturesAPI_ExtrusionBoolean_H_
21 #define FeaturesAPI_ExtrusionBoolean_H_
23 #include "FeaturesAPI.h"
25 #include <FeaturesPlugin_ExtrusionCut.h>
26 #include <FeaturesPlugin_ExtrusionFuse.h>
28 #include <ModelHighAPI_Interface.h>
29 #include <ModelHighAPI_Macro.h>
31 class ModelHighAPI_Double;
32 class ModelHighAPI_Reference;
33 class ModelHighAPI_Selection;
35 /// \class FeaturesAPI_ExtrusionBoolean
36 /// \ingroup CPPHighAPI
37 /// \brief Interface for ExtrusionBoolean feature.
38 class FeaturesAPI_ExtrusionBoolean: public ModelHighAPI_Interface
43 virtual ~FeaturesAPI_ExtrusionBoolean();
46 sketch, FeaturesPlugin_Extrusion::SKETCH_ID(),
47 ModelAPI_AttributeReference, /** Sketch launcher */,
48 baseObjects, FeaturesPlugin_Extrusion::BASE_OBJECTS_ID(),
49 ModelAPI_AttributeSelectionList, /** Base objects */,
50 direction, FeaturesPlugin_Extrusion::DIRECTION_OBJECT_ID(),
51 ModelAPI_AttributeSelection, /** Direction */,
52 creationMethod, FeaturesPlugin_Extrusion::CREATION_METHOD(),
53 ModelAPI_AttributeString, /** Creation method */,
54 toSize, FeaturesPlugin_Extrusion::TO_SIZE_ID(),
55 ModelAPI_AttributeDouble, /** To size */,
56 fromSize, FeaturesPlugin_Extrusion::FROM_SIZE_ID(),
57 ModelAPI_AttributeDouble, /** From size */,
58 toObject, FeaturesPlugin_Extrusion::TO_OBJECT_ID(),
59 ModelAPI_AttributeSelection, /** To object */,
60 toOffset, FeaturesPlugin_Extrusion::TO_OFFSET_ID(),
61 ModelAPI_AttributeDouble, /** To offset */,
62 fromObject, FeaturesPlugin_Extrusion::FROM_OBJECT_ID(),
63 ModelAPI_AttributeSelection, /** From object */,
64 fromOffset, FeaturesPlugin_Extrusion::FROM_OFFSET_ID(),
65 ModelAPI_AttributeDouble, /** From offset */,
66 booleanObjects, FeaturesPlugin_CompositeBoolean::OBJECTS_ID(),
67 ModelAPI_AttributeSelectionList, /** Boolean objects */)
69 /// Modify base attribute of the feature.
71 void setNestedSketch(const ModelHighAPI_Reference& theSketch);
73 /// Modify base attribute of the feature.
75 void setBase(const std::list<ModelHighAPI_Selection>& theBaseObjects);
77 /// Modify direction_object attribute of the feature.
79 void setDirection(const ModelHighAPI_Selection& theDirection);
81 /// Modify CreationMethod, to_size, from_size attributes of the feature.
83 void setSizes(const ModelHighAPI_Double& theToSize, const ModelHighAPI_Double& theFromSize);
85 /// Modify creation_method, to_size, from_size attributes of the feature.
87 void setSize(const ModelHighAPI_Double& theSize);
89 /// Modify creation_method, to_object, to_offset, from_object,
90 /// from_offset attributes of the feature.
92 void setPlanesAndOffsets(const ModelHighAPI_Selection& theToObject,
93 const ModelHighAPI_Double& theToOffset,
94 const ModelHighAPI_Selection& theFromObject,
95 const ModelHighAPI_Double& theFromOffset);
97 /// Modiyfy main_objects attribute of the feature.
99 void setBooleanObjects(const std::list<ModelHighAPI_Selection>& theBooleanObjects);
101 /// Dump wrapped feature
103 virtual void dump(ModelHighAPI_Dumper& theDumper) const;
106 /// Constructor without values.
108 explicit FeaturesAPI_ExtrusionBoolean(const std::shared_ptr<ModelAPI_Feature>& theFeature);
111 void execIfBaseNotEmpty();
114 /// \class FeaturesAPI_ExtrusionCut
115 /// \ingroup CPPHighAPI
116 /// \brief Interface for ExtrusionCut feature.
117 class FeaturesAPI_ExtrusionCut: public FeaturesAPI_ExtrusionBoolean
121 static std::string ID() { return FeaturesPlugin_ExtrusionCut::ID(); }
122 virtual std::string getID() { return ID(); }
125 //virtual std::string getID() {
126 // return FeaturesPlugin_ExtrusionCut::ID();
129 /// Constructor without values.
131 explicit FeaturesAPI_ExtrusionCut(const std::shared_ptr<ModelAPI_Feature>& theFeature);
133 /// Constructor with values.
135 explicit FeaturesAPI_ExtrusionCut(const std::shared_ptr<ModelAPI_Feature>& theFeature,
136 const std::list<ModelHighAPI_Selection>& theBaseObjects,
137 const ModelHighAPI_Double& theSize,
138 const std::list<ModelHighAPI_Selection>& theBooleanObjects);
140 /// Constructor with values.
142 explicit FeaturesAPI_ExtrusionCut(const std::shared_ptr<ModelAPI_Feature>& theFeature,
143 const std::list<ModelHighAPI_Selection>& theBaseObjects,
144 const ModelHighAPI_Selection& theDirection,
145 const ModelHighAPI_Double& theSize,
146 const std::list<ModelHighAPI_Selection>& theBooleanObjects);
148 /// Constructor with values.
150 explicit FeaturesAPI_ExtrusionCut(const std::shared_ptr<ModelAPI_Feature>& theFeature,
151 const std::list<ModelHighAPI_Selection>& theBaseObjects,
152 const ModelHighAPI_Double& theToSize,
153 const ModelHighAPI_Double& theFromSize,
154 const std::list<ModelHighAPI_Selection>& theBooleanObjects);
156 /// Constructor with values.
158 explicit FeaturesAPI_ExtrusionCut(const std::shared_ptr<ModelAPI_Feature>& theFeature,
159 const std::list<ModelHighAPI_Selection>& theBaseObjects,
160 const ModelHighAPI_Selection& theDirection,
161 const ModelHighAPI_Double& theToSize,
162 const ModelHighAPI_Double& theFromSize,
163 const std::list<ModelHighAPI_Selection>& theBooleanObjects);
165 /// Constructor with values.
167 explicit FeaturesAPI_ExtrusionCut(const std::shared_ptr<ModelAPI_Feature>& theFeature,
168 const std::list<ModelHighAPI_Selection>& theBaseObjects,
169 const ModelHighAPI_Selection& theToObject,
170 const ModelHighAPI_Double& theToOffset,
171 const ModelHighAPI_Selection& theFromObject,
172 const ModelHighAPI_Double& theFromOffset,
173 const std::list<ModelHighAPI_Selection>& theBooleanObjects);
175 /// Constructor with values.
177 explicit FeaturesAPI_ExtrusionCut(const std::shared_ptr<ModelAPI_Feature>& theFeature,
178 const std::list<ModelHighAPI_Selection>& theBaseObjects,
179 const ModelHighAPI_Selection& theDirection,
180 const ModelHighAPI_Selection& theToObject,
181 const ModelHighAPI_Double& theToOffset,
182 const ModelHighAPI_Selection& theFromObject,
183 const ModelHighAPI_Double& theFromOffset,
184 const std::list<ModelHighAPI_Selection>& theBooleanObjects);
187 /// Pointer on ExtrusionCut object.
188 typedef std::shared_ptr<FeaturesAPI_ExtrusionCut> ExtrusionCutPtr;
190 /// \ingroup CPPHighAPI
191 /// \brief Create ExtrusionCut feature.
193 ExtrusionCutPtr addExtrusionCut(const std::shared_ptr<ModelAPI_Document>& thePart,
194 const std::list<ModelHighAPI_Selection>& theBaseObjects,
195 const ModelHighAPI_Double& theSize,
196 const std::list<ModelHighAPI_Selection>& theBooleanObjects);
198 /// \ingroup CPPHighAPI
199 /// \brief Create ExtrusionCut feature.
201 ExtrusionCutPtr addExtrusionCut(const std::shared_ptr<ModelAPI_Document>& thePart,
202 const std::list<ModelHighAPI_Selection>& theBaseObjects,
203 const ModelHighAPI_Selection& theDirection,
204 const ModelHighAPI_Double& theSize,
205 const std::list<ModelHighAPI_Selection>& theBooleanObjects);
207 /// \ingroup CPPHighAPI
208 /// \brief Create ExtrusionCut feature.
210 ExtrusionCutPtr addExtrusionCut(const std::shared_ptr<ModelAPI_Document>& thePart,
211 const std::list<ModelHighAPI_Selection>& theBaseObjects,
212 const ModelHighAPI_Double& theToSize,
213 const ModelHighAPI_Double& theFromSize,
214 const std::list<ModelHighAPI_Selection>& theBooleanObjects);
216 /// \ingroup CPPHighAPI
217 /// \brief Create ExtrusionCut feature.
219 ExtrusionCutPtr addExtrusionCut(const std::shared_ptr<ModelAPI_Document>& thePart,
220 const std::list<ModelHighAPI_Selection>& theBaseObjects,
221 const ModelHighAPI_Selection& theDirection,
222 const ModelHighAPI_Double& theToSize,
223 const ModelHighAPI_Double& theFromSize,
224 const std::list<ModelHighAPI_Selection>& theBooleanObjects);
226 /// \ingroup CPPHighAPI
227 /// \brief Create ExtrusionCut feature.
229 ExtrusionCutPtr addExtrusionCut(const std::shared_ptr<ModelAPI_Document>& thePart,
230 const std::list<ModelHighAPI_Selection>& theBaseObjects,
231 const ModelHighAPI_Selection& theToObject,
232 const ModelHighAPI_Double& theToOffset,
233 const ModelHighAPI_Selection& theFromObject,
234 const ModelHighAPI_Double& theFromOffset,
235 const std::list<ModelHighAPI_Selection>& theBooleanObjects);
237 /// \ingroup CPPHighAPI
238 /// \brief Create ExtrusionCut feature.
240 ExtrusionCutPtr addExtrusionCut(const std::shared_ptr<ModelAPI_Document>& thePart,
241 const std::list<ModelHighAPI_Selection>& theBaseObjects,
242 const ModelHighAPI_Selection& theDirection,
243 const ModelHighAPI_Selection& theToObject,
244 const ModelHighAPI_Double& theToOffset,
245 const ModelHighAPI_Selection& theFromObject,
246 const ModelHighAPI_Double& theFromOffset,
247 const std::list<ModelHighAPI_Selection>& theBooleanObjects);
249 /// \class FeaturesAPI_ExtrusionFuse
250 /// \ingroup CPPHighAPI
251 /// \brief Interface for ExtrusionFuse feature.
252 class FeaturesAPI_ExtrusionFuse: public FeaturesAPI_ExtrusionBoolean
255 static std::string ID() { return FeaturesPlugin_ExtrusionFuse::ID(); }
256 virtual std::string getID() { return ID(); }
258 /// Constructor without values.
260 explicit FeaturesAPI_ExtrusionFuse(const std::shared_ptr<ModelAPI_Feature>& theFeature);
262 /// Constructor with values.
264 explicit FeaturesAPI_ExtrusionFuse(const std::shared_ptr<ModelAPI_Feature>& theFeature,
265 const std::list<ModelHighAPI_Selection>& theBaseObjects,
266 const ModelHighAPI_Double& theSize,
267 const std::list<ModelHighAPI_Selection>& theBooleanObjects);
269 /// Constructor with values.
271 explicit FeaturesAPI_ExtrusionFuse(const std::shared_ptr<ModelAPI_Feature>& theFeature,
272 const std::list<ModelHighAPI_Selection>& theBaseObjects,
273 const ModelHighAPI_Selection& theDirection,
274 const ModelHighAPI_Double& theSize,
275 const std::list<ModelHighAPI_Selection>& theBooleanObjects);
277 /// Constructor with values.
279 explicit FeaturesAPI_ExtrusionFuse(const std::shared_ptr<ModelAPI_Feature>& theFeature,
280 const std::list<ModelHighAPI_Selection>& theBaseObjects,
281 const ModelHighAPI_Double& theToSize,
282 const ModelHighAPI_Double& theFromSize,
283 const std::list<ModelHighAPI_Selection>& theBooleanObjects);
285 /// Constructor with values.
287 explicit FeaturesAPI_ExtrusionFuse(const std::shared_ptr<ModelAPI_Feature>& theFeature,
288 const std::list<ModelHighAPI_Selection>& theBaseObjects,
289 const ModelHighAPI_Selection& theDirection,
290 const ModelHighAPI_Double& theToSize,
291 const ModelHighAPI_Double& theFromSize,
292 const std::list<ModelHighAPI_Selection>& theBooleanObjects);
294 /// Constructor with values.
296 explicit FeaturesAPI_ExtrusionFuse(const std::shared_ptr<ModelAPI_Feature>& theFeature,
297 const std::list<ModelHighAPI_Selection>& theBaseObjects,
298 const ModelHighAPI_Selection& theToObject,
299 const ModelHighAPI_Double& theToOffset,
300 const ModelHighAPI_Selection& theFromObject,
301 const ModelHighAPI_Double& theFromOffset,
302 const std::list<ModelHighAPI_Selection>& theBooleanObjects);
304 /// Constructor with values.
306 explicit FeaturesAPI_ExtrusionFuse(const std::shared_ptr<ModelAPI_Feature>& theFeature,
307 const std::list<ModelHighAPI_Selection>& theBaseObjects,
308 const ModelHighAPI_Selection& theDirection,
309 const ModelHighAPI_Selection& theToObject,
310 const ModelHighAPI_Double& theToOffset,
311 const ModelHighAPI_Selection& theFromObject,
312 const ModelHighAPI_Double& theFromOffset,
313 const std::list<ModelHighAPI_Selection>& theBooleanObjects);
316 /// Pointer on ExtrusionFuse object.
317 typedef std::shared_ptr<FeaturesAPI_ExtrusionFuse> ExtrusionFusePtr;
319 /// \ingroup CPPHighAPI
320 /// \brief Create ExtrusionFuse feature.
322 ExtrusionFusePtr addExtrusionFuse(const std::shared_ptr<ModelAPI_Document>& thePart,
323 const std::list<ModelHighAPI_Selection>& theBaseObjects,
324 const ModelHighAPI_Double& theSize,
325 const std::list<ModelHighAPI_Selection>& theBooleanObjects);
327 /// \ingroup CPPHighAPI
328 /// \brief Create ExtrusionFuse feature.
330 ExtrusionFusePtr addExtrusionFuse(const std::shared_ptr<ModelAPI_Document>& thePart,
331 const std::list<ModelHighAPI_Selection>& theBaseObjects,
332 const ModelHighAPI_Selection& theDirection,
333 const ModelHighAPI_Double& theSize,
334 const std::list<ModelHighAPI_Selection>& theBooleanObjects);
336 /// \ingroup CPPHighAPI
337 /// \brief Create ExtrusionFuse feature.
339 ExtrusionFusePtr addExtrusionFuse(const std::shared_ptr<ModelAPI_Document>& thePart,
340 const std::list<ModelHighAPI_Selection>& theBaseObjects,
341 const ModelHighAPI_Double& theToSize,
342 const ModelHighAPI_Double& theFromSize,
343 const std::list<ModelHighAPI_Selection>& theBooleanObjects);
345 /// \ingroup CPPHighAPI
346 /// \brief Create ExtrusionFuse feature.
348 ExtrusionFusePtr addExtrusionFuse(const std::shared_ptr<ModelAPI_Document>& thePart,
349 const std::list<ModelHighAPI_Selection>& theBaseObjects,
350 const ModelHighAPI_Selection& theDirection,
351 const ModelHighAPI_Double& theToSize,
352 const ModelHighAPI_Double& theFromSize,
353 const std::list<ModelHighAPI_Selection>& theBooleanObjects);
355 /// \ingroup CPPHighAPI
356 /// \brief Create ExtrusionFuse feature.
358 ExtrusionFusePtr addExtrusionFuse(const std::shared_ptr<ModelAPI_Document>& thePart,
359 const std::list<ModelHighAPI_Selection>& theBaseObjects,
360 const ModelHighAPI_Selection& theToObject,
361 const ModelHighAPI_Double& theToOffset,
362 const ModelHighAPI_Selection& theFromObject,
363 const ModelHighAPI_Double& theFromOffset,
364 const std::list<ModelHighAPI_Selection>& theBooleanObjects);
366 /// \ingroup CPPHighAPI
367 /// \brief Create ExtrusionFuse feature.
369 ExtrusionFusePtr addExtrusionFuse(const std::shared_ptr<ModelAPI_Document>& thePart,
370 const std::list<ModelHighAPI_Selection>& theBaseObjects,
371 const ModelHighAPI_Selection& theDirection,
372 const ModelHighAPI_Selection& theToObject,
373 const ModelHighAPI_Double& theToOffset,
374 const ModelHighAPI_Selection& theFromObject,
375 const ModelHighAPI_Double& theFromOffset,
376 const std::list<ModelHighAPI_Selection>& theBooleanObjects);
378 #endif // FeaturesAPI_ExtrusionBoolean_H_