Salome HOME
updated copyright message
[modules/shaper.git] / src / FeaturesPlugin / FeaturesPlugin_Placement.h
index 3cfd358874a21a7d361df35dbe086aae70c3206b..0fc53d7a6e0185a76a4a335cf338528541a95ad6 100644 (file)
@@ -1,8 +1,21 @@
-// Copyright (C) 2014-20xx CEA/DEN, EDF R&D -->
-
-// File:        FeaturesPlugin_Placement.h
-// Created:     2 Dec 2014
-// Author:      Artem ZHIDKOV
+// Copyright (C) 2014-2023  CEA, EDF
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 
 #ifndef FeaturesPlugin_Placement_H_
 #define FeaturesPlugin_Placement_H_
 #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:
@@ -23,17 +45,38 @@ class FeaturesPlugin_Placement : public ModelAPI_Feature
     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
@@ -43,7 +86,7 @@ class FeaturesPlugin_Placement : public ModelAPI_Feature
     return MY_KIND;
   }
 
-  /// Creates a new part document if needed
+  /// Performs the algorithm and stores results it in the data structure.
   FEATURESPLUGIN_EXPORT virtual void execute();
 
   /// Request for initialization of data model of the feature: adding all attributes
@@ -52,10 +95,8 @@ class FeaturesPlugin_Placement : public ModelAPI_Feature
   /// Use plugin manager for features creation
   FeaturesPlugin_Placement();
 private:
-  /// Load Naming data structure of the feature to the document
-  void LoadNamingDS(GeomAlgoAPI_Placement& theFeature,
-                    std::shared_ptr<ModelAPI_ResultBody> theResultBody,
-                    std::shared_ptr<GeomAPI_Shape> theSlaveObject);
+  /// Checks validity of passed shape.
+  bool isShapeValid(GeomShapePtr theShape);
 };
 
 #endif