Salome HOME
3cfd358874a21a7d361df35dbe086aae70c3206b
[modules/shaper.git] / src / FeaturesPlugin / FeaturesPlugin_Placement.h
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D -->
2
3 // File:        FeaturesPlugin_Placement.h
4 // Created:     2 Dec 2014
5 // Author:      Artem ZHIDKOV
6
7 #ifndef FeaturesPlugin_Placement_H_
8 #define FeaturesPlugin_Placement_H_
9
10 #include "FeaturesPlugin.h"
11 #include <ModelAPI_Feature.h>
12 #include <GeomAlgoAPI_Placement.h>
13
14 class ModelAPI_ResultBody;
15 class GeomAPI_Shape;
16
17 class FeaturesPlugin_Placement : public ModelAPI_Feature
18 {
19  public:
20   /// Placement kind
21   inline static const std::string& ID()
22   {
23     static const std::string MY_PLACEMENT_ID("Placement");
24     return MY_PLACEMENT_ID;
25   }
26   /// attribute name of referenced face
27   inline static const std::string& BASE_FACE_ID()
28   {
29     static const std::string MY_BASE_FACE_ID("placement_base_face");
30     return MY_BASE_FACE_ID;
31   }
32   /// attribute name of attractable face
33   inline static const std::string& ATTRACT_FACE_ID()
34   {
35     static const std::string MY_ATTRACT_FACE_ID("placement_attractable_face");
36     return MY_ATTRACT_FACE_ID;
37   }
38
39   /// Returns the kind of a feature
40   FEATURESPLUGIN_EXPORT virtual const std::string& getKind()
41   {
42     static std::string MY_KIND = FeaturesPlugin_Placement::ID();
43     return MY_KIND;
44   }
45
46   /// Creates a new part document if needed
47   FEATURESPLUGIN_EXPORT virtual void execute();
48
49   /// Request for initialization of data model of the feature: adding all attributes
50   FEATURESPLUGIN_EXPORT virtual void initAttributes();
51
52   /// Use plugin manager for features creation
53   FeaturesPlugin_Placement();
54 private:
55   /// Load Naming data structure of the feature to the document
56   void LoadNamingDS(GeomAlgoAPI_Placement& theFeature,
57                     std::shared_ptr<ModelAPI_ResultBody> theResultBody,
58                     std::shared_ptr<GeomAPI_Shape> theSlaveObject);
59 };
60
61 #endif