1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D -->
3 // File: FeaturesPlugin_Placement.h
5 // Author: Artem ZHIDKOV
7 #ifndef FeaturesPlugin_Placement_H_
8 #define FeaturesPlugin_Placement_H_
10 #include "FeaturesPlugin.h"
11 #include <ModelAPI_Feature.h>
12 #include <GeomAlgoAPI_Placement.h>
14 class ModelAPI_ResultBody;
17 /**\class FeaturesPlugin_Placement
19 * \brief Feature for applying of placement operation: relative movement of Solid.
21 * Locates the selected placement_attractable_object (face, edge, vertex) of the solid into
22 * the selected placement_base_object. Faces must be planar, edges must be linear.
23 * Orientation of the placed solid depends on the underlied planes of both faces.
25 class FeaturesPlugin_Placement : public ModelAPI_Feature
29 inline static const std::string& ID()
31 static const std::string MY_PLACEMENT_ID("Placement");
32 return MY_PLACEMENT_ID;
34 /// attribute name of references sketch entities list, it should contain a sketch result or
35 /// a pair a sketch result to sketch face
36 /*Modification for specification of 1.3.0
37 inline static const std::string& LIST_ID()
39 static const std::string MY_GROUP_LIST_ID("base");
40 return MY_GROUP_LIST_ID;
42 /// attribute name of referenced object
43 inline static const std::string& BASE_OBJECT_ID()
45 static const std::string MY_BASE_OBJECT_ID("placement_base_object");
46 return MY_BASE_OBJECT_ID;
48 /// attribute name of attractable face
49 inline static const std::string& ATTRACT_OBJECT_ID()
51 static const std::string MY_ATTRACT_OBJECT_ID("placement_attractable_object");
52 return MY_ATTRACT_OBJECT_ID;
54 /// attribute name of flag of reverse direction
55 inline static const std::string& REVERSE_ID()
57 static const std::string MY_REVERSE_ID("placement_reverse_direction");
60 /// attribute name of flag of centering position
61 inline static const std::string& CENTERING_ID()
63 static const std::string MY_CENTERING_ID("placement_centering");
64 return MY_CENTERING_ID;
67 /// Returns the kind of a feature
68 FEATURESPLUGIN_EXPORT virtual const std::string& getKind()
70 static std::string MY_KIND = FeaturesPlugin_Placement::ID();
74 /// Creates a new part document if needed
75 FEATURESPLUGIN_EXPORT virtual void execute();
77 /// Request for initialization of data model of the feature: adding all attributes
78 FEATURESPLUGIN_EXPORT virtual void initAttributes();
80 /// Use plugin manager for features creation
81 FeaturesPlugin_Placement();
83 /// Load Naming data structure of the feature to the document
84 void LoadNamingDS(GeomAlgoAPI_Placement& theFeature,
85 std::shared_ptr<ModelAPI_ResultBody> theResultBody,
86 std::shared_ptr<GeomAPI_Shape> theSlaveObject);