Salome HOME
Extrusion fix
[modules/shaper.git] / src / ModelAPI / ModelAPI_BodyBuilder.h
index 6f857e46cfd9b8307e7ccdcceb355e9a4779a509..629e1fa9a3ca7508283b48ddc46a0e434b5dcbe4 100755 (executable)
@@ -20,6 +20,7 @@ class ModelAPI_Object;
 
 /**\class ModelAPI_BodyBuilder
 * \ingroup DataModel
+ * \brief Extra API for the ResultBody that allows to work with naming.
 */
 class ModelAPI_BodyBuilder
 {
@@ -27,7 +28,8 @@ public:
   MODELAPI_EXPORT virtual ~ModelAPI_BodyBuilder() {};
 
   /// Stores the shape (called by the execution method).
-  virtual void store(const std::shared_ptr<GeomAPI_Shape>& theShape) = 0;
+  virtual void store(const std::shared_ptr<GeomAPI_Shape>& theShape,
+                     const bool theIsStoreSameShapes = true) = 0;
 
   /// Stores the generated shape (called by the execution method).
   virtual void storeGenerated(const std::shared_ptr<GeomAPI_Shape>& theFromShape,
@@ -38,6 +40,9 @@ public:
                                  const std::shared_ptr<GeomAPI_Shape>& theNewShape,
                             const int theDecomposeSolidsTag = 0) = 0;
 
+  /// Stores the shape without naming support
+  virtual void storeWithoutNaming(const std::shared_ptr<GeomAPI_Shape>& theShape) = 0;
+
   /// Returns the shape-result produced by this feature
   virtual std::shared_ptr<GeomAPI_Shape> shape() = 0;
 
@@ -74,7 +79,8 @@ public:
                                                const int  theKindOfShape,
                                                const int  theTag,
                                                                                           const std::string& theName,
-                                               GeomAPI_DataMapOfShapeShape& theSubShapes) = 0;
+                                               GeomAPI_DataMapOfShapeShape& theSubShapes,
+                                               const bool theIsStoreSeparate = false) = 0;
   /// load and orient generated shapes
   virtual void loadAndOrientGeneratedShapes (
                                                   GeomAlgoAPI_MakeShape* theMS,
@@ -97,6 +103,10 @@ public:
   /// (theFlag = true) and back (theFlag = false)
   virtual void evolutionToSelection(const bool theFlag) = 0;
 
+  /// Returns true if the latest modification of this body in the naming history
+  // is equal to the given shape
+  virtual bool isLatestEqual(const std::shared_ptr<GeomAPI_Shape>& theShape) = 0;
+
 protected:
   /// Returns the data manager of this object: attributes
   MODELAPI_EXPORT virtual std::shared_ptr<ModelAPI_Data> data() const;
@@ -105,9 +115,10 @@ protected:
   MODELAPI_EXPORT virtual std::shared_ptr<ModelAPI_Document> document() const;
 
 protected:
+  /// Deafult constructor accessible only from Model_Object
   MODELAPI_EXPORT ModelAPI_BodyBuilder(ModelAPI_Object* theOwner);
 
-  ModelAPI_Object* myOwner;
+  ModelAPI_Object* myOwner; ///< the owner object this builder belongs to
 };
 
 //! Pointer on feature object