#include "FeaturesPlugin.h"
#include <ModelAPI_Feature.h>
#include <GeomAlgoAPI_Placement.h>
+#include <GeomAlgoAPI_Transform.h>
class ModelAPI_ResultBody;
class GeomAPI_Shape;
+/**\class FeaturesPlugin_Placement
+ * \ingroup Plugins
+ * \brief Feature for applying of placement operation: relative movement of Solid.
+ *
+ * Locates the selected placement_attractable_object (face, edge, vertex) of the solid into
+ * the selected placement_base_object. Faces must be planar, edges must be linear.
+ * Orientation of the placed solid depends on the underlied planes of both faces.
+ */
class FeaturesPlugin_Placement : public ModelAPI_Feature
{
public:
static const std::string MY_PLACEMENT_ID("Placement");
return MY_PLACEMENT_ID;
}
- /// attribute name of referenced face
- inline static const std::string& BASE_FACE_ID()
+
+ /// attribute name of references sketch entities list, it should contain a sketch result or
+ /// a pair a sketch result to sketch face
+ inline static const std::string& OBJECTS_LIST_ID()
+ {
+ static const std::string MY_OBJECTS_LIST_ID("placement_objects_list");
+ return MY_OBJECTS_LIST_ID;
+ }
+
+ /// attribute name of referenced object
+ inline static const std::string& START_SHAPE_ID()
{
- static const std::string MY_BASE_FACE_ID("placement_base_face");
- return MY_BASE_FACE_ID;
+ static const std::string MY_START_SHAPE_ID("placement_start_shape");
+ return MY_START_SHAPE_ID;
}
/// attribute name of attractable face
- inline static const std::string& ATTRACT_FACE_ID()
+ inline static const std::string& END_SHAPE_ID()
+ {
+ static const std::string MY_END_SHAPE_ID("placement_end_shape");
+ return MY_END_SHAPE_ID;
+ }
+ /// attribute name of flag of reverse direction
+ inline static const std::string& REVERSE_ID()
+ {
+ static const std::string MY_REVERSE_ID("placement_reverse_direction");
+ return MY_REVERSE_ID;
+ }
+ /// attribute name of flag of centering position
+ inline static const std::string& CENTERING_ID()
{
- static const std::string MY_ATTRACT_FACE_ID("placement_attractable_face");
- return MY_ATTRACT_FACE_ID;
+ static const std::string MY_CENTERING_ID("placement_centering");
+ return MY_CENTERING_ID;
}
/// Returns the kind of a feature
FeaturesPlugin_Placement();
private:
/// Load Naming data structure of the feature to the document
- void LoadNamingDS(GeomAlgoAPI_Placement& theFeature,
+ void LoadNamingDS(GeomAlgoAPI_Transform& theTransformAlgo,
std::shared_ptr<ModelAPI_ResultBody> theResultBody,
std::shared_ptr<GeomAPI_Shape> theSlaveObject);
};