Salome HOME
Add ModelAPI_AttributeIntArray to SWIG
[modules/shaper.git] / src / FeaturesPlugin / FeaturesPlugin_Boolean.h
index 0fdeb6baeee7901f36a0b3babea4c798687c32f2..0a072e8229cf9a0f1a2a7849129286e05f0df949 100644 (file)
@@ -1,3 +1,5 @@
+// Copyright (C) 2014-20xx CEA/DEN, EDF R&D -->
+
 // File:        FeaturesPlugin_Boolean.h
 // Created:     02 Sept 2014
 // Author:      Vitaly SMETANNIKOV
@@ -7,17 +9,32 @@
 
 #include "FeaturesPlugin.h"
 #include <ModelAPI_Feature.h>
-#include <GeomAPI_Shape.h>
+
 #include <GeomAlgoAPI_Boolean.h>
 
+class GeomAlgoAPI_MakeShapeList;
+
+/**\class FeaturesPlugin_Boolean
+ * \ingroup Plugins
+ * \brief Feature for applying of Boolean operations on Solids.
+ *
+ * Supports three kinds of Boolean operations: Cut, Fuse and Common.
+ * For all of them requires two Solids: object and tool.
+ */
 class FeaturesPlugin_Boolean : public ModelAPI_Feature
 {
- public:
+public:
   /// Extrusion kind
   inline static const std::string& ID()
   {
-    static const std::string MY_CUT_ID("Boolean");
-    return MY_CUT_ID;
+    static const std::string MY_ID("Boolean");
+    return MY_ID;
+  }
+  /// attribute name of referenced object
+  inline static const std::string& OBJECT_LIST_ID()
+  {
+    static const std::string MY_OBJECT_LIST_ID("main_objects");
+    return MY_OBJECT_LIST_ID;
   }
   /// attribute name of referenced object
   inline static const std::string& OBJECT_ID()
@@ -31,20 +48,25 @@ class FeaturesPlugin_Boolean : public ModelAPI_Feature
     static const std::string MY_TOOL_ID("tool_object");
     return MY_TOOL_ID;
   }
+  /// attribute name of tool object
+  inline static const std::string& TOOL_LIST_ID()
+  {
+    static const std::string MY_TOOL_LIST_ID("tool_objects");
+    return MY_TOOL_LIST_ID;
+  }
   /// attribute name of operation type
   inline static const std::string& TYPE_ID()
   {
-    static const std::string MY_TOOL_ID("bool_type");
-    return MY_TOOL_ID;
+    static const std::string MY_TYPE_ID("bool_type");
+    return MY_TYPE_ID;
   }
 
   enum {
+    BOOL_CUT,
     BOOL_FUSE,
-       BOOL_CUT,
     BOOL_COMMON
   };
 
-
   /// Returns the kind of a feature
   FEATURESPLUGIN_EXPORT virtual const std::string& getKind()
   {
@@ -62,14 +84,15 @@ class FeaturesPlugin_Boolean : public ModelAPI_Feature
   FeaturesPlugin_Boolean();
 
 private:
-  boost::shared_ptr<GeomAPI_Shape> getShape(const std::string& theAttrName);
-  
+  std::shared_ptr<GeomAPI_Shape> getShape(const std::string& theAttrName);
+
   /// Load Naming data structure of the feature to the document
-  void LoadNamingDS(GeomAlgoAPI_Boolean* theFeature, 
-                                       boost::shared_ptr<ModelAPI_ResultBody> theResultBody,
-                       boost::shared_ptr<GeomAPI_Shape> theObject,
-                       boost::shared_ptr<GeomAPI_Shape> theTool,
-                                       int theType);
+  void loadNamingDS(std::shared_ptr<ModelAPI_ResultBody> theResultBody,
+                    const std::shared_ptr<GeomAPI_Shape> theBaseShape,
+                    const ListOfShape& theTools,
+                    const std::shared_ptr<GeomAPI_Shape> theResultShape,
+                    GeomAlgoAPI_MakeShape& theMakeShape,
+                    GeomAPI_DataMapOfShapeShape& theMapOfShapes);
 };
 
 #endif