Salome HOME
d7418c52bffac018a719cb7c9278525df1d64ab3
[modules/shaper.git] / src / FeaturesAPI / FeaturesAPI_RemoveSubShapes.cpp
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D -->
2
3 // File:        FeaturesAPI_RemoveSubShapes.cpp
4 // Created:     09 June 2016
5 // Author:      Dmitry Bobylev
6
7 #include "FeaturesAPI_RemoveSubShapes.h"
8
9 #include <ModelHighAPI_Dumper.h>
10 #include <ModelHighAPI_Tools.h>
11
12 //==================================================================================================
13 FeaturesAPI_RemoveSubShapes::FeaturesAPI_RemoveSubShapes(const std::shared_ptr<ModelAPI_Feature>& theFeature)
14 : ModelHighAPI_Interface(theFeature)
15 {
16   initialize();
17 }
18
19 //==================================================================================================
20 FeaturesAPI_RemoveSubShapes::FeaturesAPI_RemoveSubShapes(const std::shared_ptr<ModelAPI_Feature>& theFeature,
21                                                          const ModelHighAPI_Selection& theBase)
22 : ModelHighAPI_Interface(theFeature)
23 {
24   if(initialize()) {
25     setBase(theBase);
26
27     execute();
28   }
29 }
30
31 //==================================================================================================
32 FeaturesAPI_RemoveSubShapes::~FeaturesAPI_RemoveSubShapes()
33 {
34
35 }
36
37 //==================================================================================================
38 void FeaturesAPI_RemoveSubShapes::setBase(const ModelHighAPI_Selection& theBase)
39 {
40   fillAttribute(theBase, mybase);
41
42   execute();
43 }
44
45 //==================================================================================================
46 void FeaturesAPI_RemoveSubShapes::setSubShapesToKeep(const std::list<ModelHighAPI_Selection>& theSubShapes)
47 {
48   fillAttribute(theSubShapes, mysubshapes);
49
50   execute();
51 }
52
53 //==================================================================================================
54 void FeaturesAPI_RemoveSubShapes::dump(ModelHighAPI_Dumper& theDumper) const
55 {
56   FeaturePtr aBase = feature();
57   const std::string& aDocName = theDumper.name(aBase->document());
58
59   AttributeSelectionPtr anAttrBaseShape = aBase->selection(FeaturesPlugin_RemoveSubShapes::BASE_SHAPE_ID());
60   AttributeSelectionListPtr anAttrSubShapes = aBase->selectionList(FeaturesPlugin_RemoveSubShapes::SUBSHAPES_ID());
61
62   theDumper << aBase << " = model.addRemoveSubShapes(" << aDocName << ", " << anAttrBaseShape << ")" << std::endl;
63   theDumper << aDocName << ".setSubShapesToKeep(" << anAttrSubShapes << ")" << std::endl;
64 }
65
66 //==================================================================================================
67 RemoveSubShapesPtr addRemoveSubShapes(const std::shared_ptr<ModelAPI_Document>& thePart,
68                                       const ModelHighAPI_Selection& theBase)
69 {
70   std::shared_ptr<ModelAPI_Feature> aFeature = thePart->addFeature(FeaturesAPI_RemoveSubShapes::ID());
71   return RemoveSubShapesPtr(new FeaturesAPI_RemoveSubShapes(aFeature, theBase));
72 }