Salome HOME
Added "Multitranslation" feature.
[modules/shaper.git] / src / FeaturesAPI / FeaturesAPI_MultiTranslation.h
diff --git a/src/FeaturesAPI/FeaturesAPI_MultiTranslation.h b/src/FeaturesAPI/FeaturesAPI_MultiTranslation.h
new file mode 100644 (file)
index 0000000..a06c71f
--- /dev/null
@@ -0,0 +1,125 @@
+// Copyright (C) 2014-20xx CEA/DEN, EDF R&D -->
+
+// File:        FeaturesAPI_MultiTranslation.h
+// Created:     09 Feb 2017
+// Author:      Clarisse Genrault (CEA)
+
+#ifndef FEATURESAPI_MULTITRANSLATION_H_
+#define FEATURESAPI_MULTITRANSLATION_H_
+
+#include "FeaturesAPI.h"
+
+#include <FeaturesPlugin_MultiTranslation.h>
+
+#include <ModelHighAPI_Interface.h>
+#include <ModelHighAPI_Macro.h>
+
+class ModelHighAPI_Double;
+class ModelHighAPI_Dumper;
+class ModelHighAPI_Integer;
+class ModelHighAPI_Selection;
+
+/// \class FeaturesAPI_MultiTranslation
+/// \ingroup CPPHighAPI
+/// \brief Interface for Translation feature.
+class FeaturesAPI_MultiTranslation: public ModelHighAPI_Interface
+{
+public:
+  /// Constructor without values.
+  FEATURESAPI_EXPORT
+  explicit FeaturesAPI_MultiTranslation(const std::shared_ptr<ModelAPI_Feature>& theFeature);
+
+  /// Constructor with values.
+  FEATURESAPI_EXPORT
+  explicit FeaturesAPI_MultiTranslation(const std::shared_ptr<ModelAPI_Feature>& theFeature,
+                                        const std::list<ModelHighAPI_Selection>& theMainObjects,
+                                        const ModelHighAPI_Selection& theAxisObject,
+                                        const ModelHighAPI_Double& theStep,
+                                        const ModelHighAPI_Integer& theNumber);
+
+  /// Constructor with values.
+  FEATURESAPI_EXPORT
+  explicit FeaturesAPI_MultiTranslation(const std::shared_ptr<ModelAPI_Feature>& theFeature,
+                                        const std::list<ModelHighAPI_Selection>& theMainObjects,
+                                        const ModelHighAPI_Selection& theFirstAxisObject,
+                                        const ModelHighAPI_Double& theFirstStep,
+                                        const ModelHighAPI_Integer& theFirstNumber,
+                                        const ModelHighAPI_Selection& theSecondAxisObject,
+                                        const ModelHighAPI_Double& theSecondStep,
+                                        const ModelHighAPI_Integer& theSecondNumber);
+
+  /// Destructor.
+  FEATURESAPI_EXPORT
+  virtual ~FeaturesAPI_MultiTranslation();
+
+  INTERFACE_8(FeaturesPlugin_MultiTranslation::ID(),
+              mainObjects, FeaturesPlugin_MultiTranslation::OBJECTS_LIST_ID(),
+              ModelAPI_AttributeSelectionList, /** Main objects */,
+              firstAxisObject, FeaturesPlugin_MultiTranslation::AXIS_FIRST_DIR_ID(),
+              ModelAPI_AttributeSelection, /** First axis object */,
+              firstStep, FeaturesPlugin_MultiTranslation::STEP_FIRST_DIR_ID(),
+              ModelAPI_AttributeDouble, /** First step */,
+              firstNumber, FeaturesPlugin_MultiTranslation::NB_COPIES_FIRST_DIR_ID(),
+              ModelAPI_AttributeInteger, /** First number of copies */,
+              useSecondDir, FeaturesPlugin_MultiTranslation::USE_SECOND_DIR_ID(),
+              ModelAPI_AttributeString, /** Use the second dir */,
+              secondAxisObject, FeaturesPlugin_MultiTranslation::AXIS_SECOND_DIR_ID(),
+              ModelAPI_AttributeSelection, /** Second axis object */,
+              secondStep, FeaturesPlugin_MultiTranslation::STEP_SECOND_DIR_ID(),
+              ModelAPI_AttributeDouble, /** Second step */,
+              secondNumber, FeaturesPlugin_MultiTranslation::NB_COPIES_SECOND_DIR_ID(),
+              ModelAPI_AttributeInteger, /** Second number of copies */
+             )
+
+  /// Set main objects.
+  FEATURESAPI_EXPORT
+  void setMainObjects(const std::list<ModelHighAPI_Selection>& theMainObjects);
+
+  /// Modify CreationMethod, axis_first_dir, step_first_dir attributes of the feature.
+  FEATURESAPI_EXPORT
+  void setFirstAxisAndDistance(const ModelHighAPI_Selection& theAxisObject,
+                               const ModelHighAPI_Double& theDistance);
+
+  /// Modify CreationMethod, axis_second_dir, step_second_dir attributes of the feature.
+  FEATURESAPI_EXPORT
+  void setSecondAxisAndDistance(const ModelHighAPI_Selection& theAxisObject,
+                                const ModelHighAPI_Double& theDistance);
+  
+  /// Modify CreationMethod, nb_first_dir attribute of the feature.
+  FEATURESAPI_EXPORT
+  void setFirstNumber(const ModelHighAPI_Integer& theFirstNumber);
+
+  /// Modify CreationMethod, nb_second_dir attribute of the feature.
+  FEATURESAPI_EXPORT
+  void setSecondNumber(const ModelHighAPI_Integer& theSecondNumber);
+
+  /// Dump wrapped feature
+  FEATURESAPI_EXPORT
+  virtual void dump(ModelHighAPI_Dumper& theDumper) const;
+};
+
+/// Pointer on Translation object.
+typedef std::shared_ptr<FeaturesAPI_MultiTranslation> MultiTranslationPtr;
+
+/// \ingroup CPPHighAPI
+/// \brief Create MultiTranslation feature.
+FEATURESAPI_EXPORT
+MultiTranslationPtr addMultiTranslation(const std::shared_ptr<ModelAPI_Document>& thePart,
+                                        const std::list<ModelHighAPI_Selection>& theMainObjects,
+                                        const ModelHighAPI_Selection& theAxisObject,
+                                        const ModelHighAPI_Double& theStep,
+                                        const ModelHighAPI_Integer& theNumber);
+
+/// \ingroup CPPHighAPI
+/// \brief Create MultiTranslation feature.
+FEATURESAPI_EXPORT
+MultiTranslationPtr addMultiTranslation(const std::shared_ptr<ModelAPI_Document>& thePart,
+                                        const std::list<ModelHighAPI_Selection>& theMainObjects,
+                                        const ModelHighAPI_Selection& theFirstAxisObject,
+                                        const ModelHighAPI_Double& theFirstStep,
+                                        const ModelHighAPI_Integer& theFirstNumber,
+                                        const ModelHighAPI_Selection& theSecondAxisObject,
+                                        const ModelHighAPI_Double& theSecondStep,
+                                        const ModelHighAPI_Integer& theSecondNumber);
+
+#endif // FEATURESAPI_MULTITRANSLATION_H_