]> SALOME platform Git repositories - modules/shaper.git/blob - src/SketchAPI/SketchAPI_Sketch.h
Salome HOME
Small formatting and fix of addCircle
[modules/shaper.git] / src / SketchAPI / SketchAPI_Sketch.h
1 // Name   : SketchAPI_Sketch.h
2 // Purpose: 
3 //
4 // History:
5 // 07/06/16 - Sergey POKHODENKO - Creation of the file
6
7 #ifndef SRC_SKETCHAPI_SKETCHAPI_SKETCH_H_
8 #define SRC_SKETCHAPI_SKETCHAPI_SKETCH_H_
9
10 //--------------------------------------------------------------------------------------
11 #include "SketchAPI.h"
12
13 #include <SketchPlugin_Sketch.h>
14 #include <SketchPlugin_SketchEntity.h>
15
16 #include <ModelHighAPI_Interface.h>
17 #include <ModelHighAPI_Macro.h>
18 //--------------------------------------------------------------------------------------
19 class ModelAPI_CompositeFeature;
20 class ModelHighAPI_Double;
21 class ModelHighAPI_RefAttr;
22 class ModelHighAPI_Selection;
23 class SketchAPI_Circle;
24 class SketchAPI_Line;
25 //--------------------------------------------------------------------------------------
26 /**\class SketchAPI_Sketch
27  * \ingroup CPPHighAPI
28  * \brief Interface for Sketch feature
29  */
30 class SketchAPI_Sketch : public ModelHighAPI_Interface
31 {
32 public:
33   /// Constructor without values
34   SKETCHAPI_EXPORT
35   explicit SketchAPI_Sketch(const std::shared_ptr<ModelAPI_Feature> & theFeature);
36   /// Constructor with values
37   SKETCHAPI_EXPORT
38   SketchAPI_Sketch(const std::shared_ptr<ModelAPI_Feature> & theFeature,
39                    const std::shared_ptr<GeomAPI_Ax3> & thePlane);
40   /// Constructor with values
41   SKETCHAPI_EXPORT
42   SketchAPI_Sketch(const std::shared_ptr<ModelAPI_Feature> & theFeature,
43                    const ModelHighAPI_Selection & theExternal);
44   /// Destructor
45   SKETCHAPI_EXPORT
46   virtual ~SketchAPI_Sketch();
47
48   INTERFACE_7(SketchPlugin_Sketch::ID(),
49               origin, SketchPlugin_Sketch::ORIGIN_ID(), GeomDataAPI_Point, /** Origin point */,
50               dirX, SketchPlugin_Sketch::DIRX_ID(), GeomDataAPI_Dir, /** Direction of X */,
51               normal, SketchPlugin_Sketch::NORM_ID(), GeomDataAPI_Dir, /** Normal */,
52               features, SketchPlugin_Sketch::FEATURES_ID(), ModelAPI_AttributeRefList, /** Features */,
53               external, SketchPlugin_SketchEntity::EXTERNAL_ID(), ModelAPI_AttributeSelection, /** External */,
54               solverError, SketchPlugin_Sketch::SOLVER_ERROR(), ModelAPI_AttributeString, /** Solver error */,
55               solverDOF, SketchPlugin_Sketch::SOLVER_DOF(), ModelAPI_AttributeString, /** Solver DOF */
56   )
57
58   /// Set plane
59   SKETCHAPI_EXPORT
60   void setPlane(const std::shared_ptr<GeomAPI_Ax3> & thePlane);
61
62   /// Set external
63   SKETCHAPI_EXPORT
64   void setExternal(const ModelHighAPI_Selection & theExternal);
65
66   // TODO(spo): addPoint
67
68   /// Add line
69   SKETCHAPI_EXPORT
70   std::shared_ptr<SketchAPI_Line> addLine(
71       double theX1, double theY1, double theX2, double theY2);
72   /// Add line
73   SKETCHAPI_EXPORT
74   std::shared_ptr<SketchAPI_Line> addLine(
75       const std::shared_ptr<GeomAPI_Pnt2d> & theStartPoint,
76       const std::shared_ptr<GeomAPI_Pnt2d> & theEndPoint);
77   /// Add line
78   SKETCHAPI_EXPORT
79   std::shared_ptr<SketchAPI_Line> addLine(const ModelHighAPI_Selection & theExternal);
80   /// Add line
81   SKETCHAPI_EXPORT
82   std::shared_ptr<SketchAPI_Line> addLine(const std::string & theExternalName);
83
84   /// Add circle
85   SKETCHAPI_EXPORT
86   std::shared_ptr<SketchAPI_Circle> addCircle(
87       double theCenterX, double theCenterY,
88       double theRadius);
89   /// Add circle
90   SKETCHAPI_EXPORT
91   std::shared_ptr<SketchAPI_Circle> addCircle(
92       const std::shared_ptr<GeomAPI_Pnt2d>& theCenter,
93       double theRadius);
94   /// Add circle
95   SKETCHAPI_EXPORT
96   std::shared_ptr<SketchAPI_Circle> addCircle(
97       double theX1, double theY1,
98       double theX2, double theY2,
99       double theX3, double theY3);
100   /// Add circle
101   SKETCHAPI_EXPORT
102   std::shared_ptr<SketchAPI_Circle> addCircle(
103       const std::shared_ptr<GeomAPI_Pnt2d>& thePoint1,
104       const std::shared_ptr<GeomAPI_Pnt2d>& thePoint2,
105       const std::shared_ptr<GeomAPI_Pnt2d>& thePoint3);
106   /// Add circle
107   SKETCHAPI_EXPORT
108   std::shared_ptr<SketchAPI_Circle> addCircle(const ModelHighAPI_Selection & theExternal);
109   /// Add circle
110   SKETCHAPI_EXPORT
111   std::shared_ptr<SketchAPI_Circle> addCircle(const std::string & theExternalName);
112
113   // TODO(spo): addArc
114
115   /// Set coincident
116   SKETCHAPI_EXPORT
117   std::shared_ptr<ModelAPI_Feature> setCoincident(
118       // TODO(spo): should it be more concrete type (e.g. ModelAPI_Object)?
119       const ModelHighAPI_RefAttr & thePoint1,
120       const ModelHighAPI_RefAttr & thePoint2);
121
122   // TODO(spo): set* (constraints)
123
124   // TODO(spo): addMirror
125
126   /// Set value
127   SKETCHAPI_EXPORT
128   void setValue(
129       const std::shared_ptr<ModelAPI_Feature> & theConstraint,
130       const ModelHighAPI_Double & theValue);
131
132   // TODO(spo): setText. Is it necessary as setValue accepts text expressions?
133
134 protected:
135   std::shared_ptr<ModelAPI_CompositeFeature> compositeFeature() const;
136
137 };
138
139 //! Pointer on Sketch object
140 typedef std::shared_ptr<SketchAPI_Sketch> SketchPtr;
141
142 /**\ingroup CPPHighAPI
143  * \brief Create Sketch feature
144  */
145 SKETCHAPI_EXPORT
146 SketchPtr addSketch(const std::shared_ptr<ModelAPI_Document> & thePart,
147                     const std::shared_ptr<GeomAPI_Ax3> & thePlane);
148
149 /**\ingroup CPPHighAPI
150  * \brief Create Sketch feature
151  */
152 SKETCHAPI_EXPORT
153 SketchPtr addSketch(const std::shared_ptr<ModelAPI_Document> & thePart,
154                     const ModelHighAPI_Selection & theExternal);
155
156 //--------------------------------------------------------------------------------------
157 //--------------------------------------------------------------------------------------
158 #endif /* SRC_SKETCHAPI_SKETCHAPI_SKETCH_H_ */