Salome HOME
Merge remote-tracking branch 'remotes/origin/HigherLevelObjectsHistory'
[modules/shaper.git] / src / PrimitivesAPI / PrimitivesAPI_Box.h
1 // Copyright (C) 2014-2019  CEA/DEN, EDF R&D
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19
20 #ifndef PRIMITIVESAPI_BOX_H_
21 #define PRIMITIVESAPI_BOX_H_
22
23 #include "PrimitivesAPI.h"
24
25 #include <PrimitivesPlugin_Box.h>
26
27 #include <ModelHighAPI_Interface.h>
28 #include <ModelHighAPI_Macro.h>
29
30 class ModelHighAPI_Double;
31 class ModelHighAPI_Selection;
32
33 /// \class PrimitivesAPI_Box
34 /// \ingroup CPPHighAPI
35 /// \brief Interface for primitive Box feature.
36 class PrimitivesAPI_Box: public ModelHighAPI_Interface
37 {
38 public:
39   /// Constructor without values.
40   PRIMITIVESAPI_EXPORT
41   explicit PrimitivesAPI_Box(const std::shared_ptr<ModelAPI_Feature>& theFeature);
42
43   /// Constructor with values.
44   PRIMITIVESAPI_EXPORT
45   explicit PrimitivesAPI_Box(const std::shared_ptr<ModelAPI_Feature>& theFeature,
46                              const ModelHighAPI_Double& theDx,
47                              const ModelHighAPI_Double& theDy,
48                              const ModelHighAPI_Double& theDz);
49
50   /// Constructor with values.
51   PRIMITIVESAPI_EXPORT
52   explicit PrimitivesAPI_Box(const std::shared_ptr<ModelAPI_Feature>& theFeature,
53                              const ModelHighAPI_Selection& theFirstPoint,
54                              const ModelHighAPI_Selection& theSecondPoint);
55
56   /// Destructor.
57   PRIMITIVESAPI_EXPORT
58   virtual ~PrimitivesAPI_Box();
59
60   INTERFACE_6(PrimitivesPlugin_Box::ID(),
61              creationMethod, PrimitivesPlugin_Box::CREATION_METHOD(),
62              ModelAPI_AttributeString, /** Creation method */,
63              dx, PrimitivesPlugin_Box::DX_ID(),
64              ModelAPI_AttributeDouble, /** Dimension in X */,
65              dy, PrimitivesPlugin_Box::DY_ID(),
66              ModelAPI_AttributeDouble, /** Dimension in Y */,
67              dz, PrimitivesPlugin_Box::DZ_ID(),
68              ModelAPI_AttributeDouble, /** Dimension in Z */,
69              firstPoint, PrimitivesPlugin_Box::POINT_FIRST_ID(),
70              ModelAPI_AttributeSelection, /** First point */,
71              secondPoint, PrimitivesPlugin_Box::POINT_SECOND_ID(),
72              ModelAPI_AttributeSelection, /** Second point */)
73
74   /// Set dimensions
75   PRIMITIVESAPI_EXPORT
76   void setDimensions(const ModelHighAPI_Double& theDx,
77                      const ModelHighAPI_Double& theDy,
78                      const ModelHighAPI_Double& theDz);
79
80   /// Set points
81   PRIMITIVESAPI_EXPORT
82   void setPoints(const ModelHighAPI_Selection& theFirstPoint,
83                  const ModelHighAPI_Selection& theSecondPoint);
84
85   /// Dump wrapped feature
86   PRIMITIVESAPI_EXPORT
87   virtual void dump(ModelHighAPI_Dumper& theDumper) const;
88 };
89
90 /// Pointer on primitive Box object
91 typedef std::shared_ptr<PrimitivesAPI_Box> BoxPtr;
92
93 /// \ingroup CPPHighAPI
94 /// \brief Create primitive Box feature.
95 PRIMITIVESAPI_EXPORT
96 BoxPtr addBox(const std::shared_ptr<ModelAPI_Document>& thePart,
97               const ModelHighAPI_Double& theDx,
98               const ModelHighAPI_Double& theDy,
99               const ModelHighAPI_Double& theDz);
100
101 /// \ingroup CPPHighAPI
102 /// \brief Create primitive Box feature.
103 PRIMITIVESAPI_EXPORT
104 BoxPtr addBox(const std::shared_ptr<ModelAPI_Document>& thePart,
105               const ModelHighAPI_Selection& theFirstPoint,
106               const ModelHighAPI_Selection& theSecondPoint);
107
108 #endif // PRIMITIVESAPI_BOX_H_