Salome HOME
Issue #1834: Fix length of lines
[modules/shaper.git] / src / ConstructionAPI / ConstructionAPI_Plane.h
index 7031b9f88c6bdeb076e8f149a0274dc5830991f0..b2d206e8c3247352b8385a002053226ba6ebc256 100644 (file)
@@ -1,3 +1,5 @@
+// Copyright (C) 2014-2016 CEA/DEN, EDF R&D
+
 // Name   : ConstructionAPI_Plane.h
 // Purpose: 
 //
 #ifndef SRC_CONSTRUCTIONAPI_CONSTRUCTIONAPI_PLANE_H_
 #define SRC_CONSTRUCTIONAPI_CONSTRUCTIONAPI_PLANE_H_
 
-//--------------------------------------------------------------------------------------
 #include "ConstructionAPI.h"
 
+#include <ConstructionPlugin_Plane.h>
+
 #include <ModelHighAPI_Interface.h>
 #include <ModelHighAPI_Macro.h>
-//--------------------------------------------------------------------------------------
+
 class ModelHighAPI_Double;
 class ModelHighAPI_Selection;
-//--------------------------------------------------------------------------------------
-/**\class ConstructionAPI_Plane
- * \ingroup CPPHighAPI
- * \brief Interface for Plane feature
- */
-class ConstructionAPI_Plane : public ModelHighAPI_Interface
+
+/// \class ConstructionAPI_Plane
+/// \ingroup CPPHighAPI
+/// \brief Interface for Plane feature
+class ConstructionAPI_Plane: public ModelHighAPI_Interface
 {
 public:
   /// Constructor without values
-  explicit ConstructionAPI_Plane(const std::shared_ptr<ModelAPI_Feature> & theFeature);
+  CONSTRUCTIONAPI_EXPORT
+  explicit ConstructionAPI_Plane(const std::shared_ptr<ModelAPI_Feature>& theFeature);
+
+  /// Constructor with values
+  CONSTRUCTIONAPI_EXPORT
+  ConstructionAPI_Plane(const std::shared_ptr<ModelAPI_Feature>& theFeature,
+                        const ModelHighAPI_Selection& theFace,
+                        const ModelHighAPI_Double& theDistance,
+                        const bool theIsReverse);
+
   /// Constructor with values
-  ConstructionAPI_Plane(const std::shared_ptr<ModelAPI_Feature> & theFeature,
-                        const ModelHighAPI_Selection & theFace,
-                        const ModelHighAPI_Double & theDistance);
+  CONSTRUCTIONAPI_EXPORT
+  ConstructionAPI_Plane(const std::shared_ptr<ModelAPI_Feature>& theFeature,
+                        const ModelHighAPI_Double& theA,
+                        const ModelHighAPI_Double& theB,
+                        const ModelHighAPI_Double& theC,
+                        const ModelHighAPI_Double& theD);
+
+  /// Constructor with values
+  CONSTRUCTIONAPI_EXPORT
+  ConstructionAPI_Plane(const std::shared_ptr<ModelAPI_Feature>& theFeature,
+                        const ModelHighAPI_Selection& thePoint1,
+                        const ModelHighAPI_Selection& thePoint2,
+                        const ModelHighAPI_Selection& thePoint3);
+
+  /// Constructor with values
+  CONSTRUCTIONAPI_EXPORT
+  ConstructionAPI_Plane(const std::shared_ptr<ModelAPI_Feature>& theFeature,
+                        const ModelHighAPI_Selection& theLine,
+                        const ModelHighAPI_Selection& thePoint,
+                        const bool theIsPerpendicular);
+
+  /// Constructor with values
+  CONSTRUCTIONAPI_EXPORT
+  ConstructionAPI_Plane(const std::shared_ptr<ModelAPI_Feature>& theFeature,
+                        const ModelHighAPI_Selection& theObject1,
+                        const ModelHighAPI_Selection& theObject2);
+
   /// Constructor with values
-  ConstructionAPI_Plane(const std::shared_ptr<ModelAPI_Feature> & theFeature,
-                        const ModelHighAPI_Double & theA,
-                        const ModelHighAPI_Double & theB,
-                        const ModelHighAPI_Double & theC,
-                        const ModelHighAPI_Double & theD);
+  CONSTRUCTIONAPI_EXPORT
+  ConstructionAPI_Plane(const std::shared_ptr<ModelAPI_Feature>& theFeature,
+                        const ModelHighAPI_Selection& thePlane,
+                        const ModelHighAPI_Selection& theAxis,
+                        const ModelHighAPI_Double& theAngle);
+
   /// Destructor
+  CONSTRUCTIONAPI_EXPORT
   virtual ~ConstructionAPI_Plane();
 
-  INTERFACE_7("Plane",
-              creationMethod, "CreationMethod", String, /** Creation method */,
-              face, "planeFace", Selection, /** Plane face */,
-              distance, "distance", Double, /** Distance */,
-              A, "A", Double, /** Parameter A for general equation */,
-              B, "B", Double, /** Parameter B for general equation */,
-              C, "C", Double, /** Parameter C for general equation */,
-              D, "D", Double, /** Parameter D for general equation */
-  )
+  INTERFACE_20(ConstructionPlugin_Plane::ID(),
+               creationMethod, ConstructionPlugin_Plane::CREATION_METHOD(),
+               ModelAPI_AttributeString, /** Creation method */,
+               A, ConstructionPlugin_Plane::A(),
+               ModelAPI_AttributeDouble, /** Parameter A for general equation */,
+               B, ConstructionPlugin_Plane::B(),
+               ModelAPI_AttributeDouble, /** Parameter B for general equation */,
+               C, ConstructionPlugin_Plane::C(),
+               ModelAPI_AttributeDouble, /** Parameter C for general equation */,
+               D, ConstructionPlugin_Plane::D(),
+               ModelAPI_AttributeDouble, /** Parameter D for general equation */,
+               point1, ConstructionPlugin_Plane::POINT1(),
+               ModelAPI_AttributeSelection, /** Point 1 for plane */,
+               point2, ConstructionPlugin_Plane::POINT2(),
+               ModelAPI_AttributeSelection, /** Point 2 for plane */,
+               point3, ConstructionPlugin_Plane::POINT3(),
+               ModelAPI_AttributeSelection, /** Point 3 for plane */,
+               line, ConstructionPlugin_Plane::LINE(),
+               ModelAPI_AttributeSelection, /** Line for plane */,
+               point, ConstructionPlugin_Plane::POINT(),
+               ModelAPI_AttributeSelection, /** Point for plane */,
+               perpendicular, ConstructionPlugin_Plane::PERPENDICULAR(),
+               ModelAPI_AttributeBoolean, /** Perpendicular flag */,
+               creationMethodByOtherPlane,
+               ConstructionPlugin_Plane::CREATION_METHOD_BY_OTHER_PLANE_OPTION(),
+               ModelAPI_AttributeString, /** Creation method  by other plane*/,
+               plane, ConstructionPlugin_Plane::PLANE(),
+               ModelAPI_AttributeSelection, /** Plane face */,
+               distance, ConstructionPlugin_Plane::DISTANCE(),
+               ModelAPI_AttributeDouble, /** Distance */,
+               reverse, ConstructionPlugin_Plane::REVERSE(),
+               ModelAPI_AttributeBoolean, /** Reverse flag */,
+               coincidentPoint, ConstructionPlugin_Plane::COINCIDENT_POINT(),
+               ModelAPI_AttributeSelection, /** Coincident point */,
+               axis, ConstructionPlugin_Plane::AXIS(),
+               ModelAPI_AttributeSelection, /** Axis for rotation */,
+               angle, ConstructionPlugin_Plane::ANGLE(),
+               ModelAPI_AttributeDouble, /** Rotation angle */,
+               plane1, ConstructionPlugin_Plane::PLANE1(),
+               ModelAPI_AttributeSelection, /** Plane 1 */,
+               plane2, ConstructionPlugin_Plane::PLANE2(),
+               ModelAPI_AttributeSelection, /** Plane 2 */)
 
   /// Set face and distance
-  void setFaceAndDistance(const ModelHighAPI_Selection & theFace,
-                          const ModelHighAPI_Double & theDistance);
+  CONSTRUCTIONAPI_EXPORT
+  void setByFaceAndDistance(const ModelHighAPI_Selection& theFace,
+                            const ModelHighAPI_Double& theDistance,
+                            const bool theIsReverse);
 
   /// Set GeneralEquation parameters of the feature
-  void setGeneralEquation(const ModelHighAPI_Double & theA,
-                          const ModelHighAPI_Double & theB,
-                          const ModelHighAPI_Double & theC,
-                          const ModelHighAPI_Double & theD);
+  CONSTRUCTIONAPI_EXPORT
+  void setByGeneralEquation(const ModelHighAPI_Double& theA,
+                            const ModelHighAPI_Double& theB,
+                            const ModelHighAPI_Double& theC,
+                            const ModelHighAPI_Double& theD);
+
+  /// Set by three points.
+  CONSTRUCTIONAPI_EXPORT
+  void setByThreePoints(const ModelHighAPI_Selection& thePoint1,
+                        const ModelHighAPI_Selection& thePoint2,
+                        const ModelHighAPI_Selection& thePoint3);
+
+  /// Set by line and point.
+  CONSTRUCTIONAPI_EXPORT
+  void setByLineAndPoint(const ModelHighAPI_Selection& theLine,
+                         const ModelHighAPI_Selection& thePoint,
+                         const bool theIsPerpendicular);
+
+  /// Set by two parallel planes.
+  CONSTRUCTIONAPI_EXPORT
+  void setByTwoParallelPlanes(const ModelHighAPI_Selection& thePlane1,
+                              const ModelHighAPI_Selection& thePlane2);
+
+  /// Set by coincident to point.
+  CONSTRUCTIONAPI_EXPORT
+  void setByCoincidentToPoint(const ModelHighAPI_Selection& thePlane,
+                              const ModelHighAPI_Selection& thePoint);
+
+  /// Set by rotation.
+  CONSTRUCTIONAPI_EXPORT
+  void setByRotation(const ModelHighAPI_Selection& thePlane,
+                     const ModelHighAPI_Selection& theAxis,
+                     const ModelHighAPI_Double& theAngle);
+
+  /// Dump wrapped feature
+  CONSTRUCTIONAPI_EXPORT
+  virtual void dump(ModelHighAPI_Dumper& theDumper) const;
 };
 
-//! Pointer on Plane object
+/// Pointer on Plane object
 typedef std::shared_ptr<ConstructionAPI_Plane> PlanePtr;
 
-/**\ingroup CPPHighAPI
- * \brief Create Plane feature
- */
-PlanePtr addPlane(const std::shared_ptr<ModelAPI_Document> & thePart,
-                  const ModelHighAPI_Selection & theFace,
-                  const ModelHighAPI_Double & theDistance);
-
-/**\ingroup CPPHighAPI
- * \brief Create Plane feature
- */
-PlanePtr addPlane(const std::shared_ptr<ModelAPI_Document> & thePart,
-                  const ModelHighAPI_Double & theA,
-                  const ModelHighAPI_Double & theB,
-                  const ModelHighAPI_Double & theC,
-                  const ModelHighAPI_Double & theD);
-
-//--------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------
+/// \ingroup CPPHighAPI
+/// \brief Create Plane feature
+CONSTRUCTIONAPI_EXPORT
+PlanePtr addPlane(const std::shared_ptr<ModelAPI_Document>& thePart,
+                  const ModelHighAPI_Selection& theFace,
+                  const ModelHighAPI_Double& theDistance,
+                  const bool theIsReverse);
+
+/// \ingroup CPPHighAPI
+/// \brief Create Plane feature
+CONSTRUCTIONAPI_EXPORT
+PlanePtr addPlane(const std::shared_ptr<ModelAPI_Document>& thePart,
+                  const ModelHighAPI_Double& theA,
+                  const ModelHighAPI_Double& theB,
+                  const ModelHighAPI_Double& theC,
+                  const ModelHighAPI_Double& theD);
+
+/// \ingroup CPPHighAPI
+/// \brief Create Plane feature
+CONSTRUCTIONAPI_EXPORT
+PlanePtr addPlane(const std::shared_ptr<ModelAPI_Document>& thePart,
+                  const ModelHighAPI_Selection& thePoint1,
+                  const ModelHighAPI_Selection& thePoint2,
+                  const ModelHighAPI_Selection& thePoint3);
+
+/// \ingroup CPPHighAPI
+/// \brief Create Plane feature
+CONSTRUCTIONAPI_EXPORT
+PlanePtr addPlane(const std::shared_ptr<ModelAPI_Document>& thePart,
+                  const ModelHighAPI_Selection& theLine,
+                  const ModelHighAPI_Selection& thePoint,
+                  const bool theIsPerpendicular);
+
+/// \ingroup CPPHighAPI
+/// \brief Create Plane feature
+CONSTRUCTIONAPI_EXPORT
+PlanePtr addPlane(const std::shared_ptr<ModelAPI_Document>& thePart,
+                  const ModelHighAPI_Selection& theObject1,
+                  const ModelHighAPI_Selection& theObject2);
+
+/// \ingroup CPPHighAPI
+/// \brief Create Plane feature
+CONSTRUCTIONAPI_EXPORT
+PlanePtr addPlane(const std::shared_ptr<ModelAPI_Document>& thePart,
+                  const ModelHighAPI_Selection& thePlane,
+                  const ModelHighAPI_Selection& theAxis,
+                  const ModelHighAPI_Double& theAngle);
+
 #endif /* SRC_CONSTRUCTIONAPI_CONSTRUCTIONAPI_PLANE_H_ */