1 // Name : SketchAPI_Sketch.h
5 // 07/06/16 - Sergey POKHODENKO - Creation of the file
7 #ifndef SRC_SKETCHAPI_SKETCHAPI_SKETCH_H_
8 #define SRC_SKETCHAPI_SKETCHAPI_SKETCH_H_
10 //--------------------------------------------------------------------------------------
11 #include "SketchAPI.h"
13 #include <SketchPlugin_Sketch.h>
14 #include <SketchPlugin_SketchEntity.h>
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;
25 //--------------------------------------------------------------------------------------
26 /**\class SketchAPI_Sketch
28 * \brief Interface for Sketch feature
30 class SketchAPI_Sketch : public ModelHighAPI_Interface
33 /// Constructor without values
35 explicit SketchAPI_Sketch(const std::shared_ptr<ModelAPI_Feature> & theFeature);
36 /// Constructor with values
38 SketchAPI_Sketch(const std::shared_ptr<ModelAPI_Feature> & theFeature,
39 const std::shared_ptr<GeomAPI_Ax3> & thePlane);
40 /// Constructor with values
42 SketchAPI_Sketch(const std::shared_ptr<ModelAPI_Feature> & theFeature,
43 const ModelHighAPI_Selection & theExternal);
46 virtual ~SketchAPI_Sketch();
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 */
60 void setPlane(const std::shared_ptr<GeomAPI_Ax3> & thePlane);
64 void setExternal(const ModelHighAPI_Selection & theExternal);
66 // TODO(spo): addPoint
70 std::shared_ptr<SketchAPI_Line> addLine(
71 double theX1, double theY1, double theX2, double theY2);
74 std::shared_ptr<SketchAPI_Line> addLine(
75 const std::shared_ptr<GeomAPI_Pnt2d> & theStartPoint,
76 const std::shared_ptr<GeomAPI_Pnt2d> & theEndPoint);
79 std::shared_ptr<SketchAPI_Line> addLine(const ModelHighAPI_Selection & theExternal);
82 std::shared_ptr<SketchAPI_Line> addLine(const std::string & theExternalName);
86 std::shared_ptr<SketchAPI_Circle> addCircle(
87 double theCenterX, double theCenterY,
91 std::shared_ptr<SketchAPI_Circle> addCircle(
92 const std::shared_ptr<GeomAPI_Pnt2d>& theCenter,
96 std::shared_ptr<SketchAPI_Circle> addCircle(
97 double theX1, double theY1,
98 double theX2, double theY2,
99 double theX3, double theY3);
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);
108 std::shared_ptr<SketchAPI_Circle> addCircle(const ModelHighAPI_Selection & theExternal);
111 std::shared_ptr<SketchAPI_Circle> addCircle(const std::string & theExternalName);
117 std::shared_ptr<ModelAPI_Feature> setCoincident(
118 const ModelHighAPI_RefAttr & thePoint1,
119 const ModelHighAPI_RefAttr & thePoint2);
123 std::shared_ptr<ModelAPI_Feature> setDistance(
124 const ModelHighAPI_RefAttr & thePoint,
125 const ModelHighAPI_RefAttr & theLine,
126 const ModelHighAPI_Double & theValue);
130 std::shared_ptr<ModelAPI_Feature> setLength(
131 const ModelHighAPI_RefAttr & theLine,
132 const ModelHighAPI_Double & theValue);
136 std::shared_ptr<ModelAPI_Feature> setParallel(
137 const ModelHighAPI_RefAttr & theLine1,
138 const ModelHighAPI_RefAttr & theLine2);
140 /// Set perpendicular
142 std::shared_ptr<ModelAPI_Feature> setPerpendicular(
143 const ModelHighAPI_RefAttr & theLine1,
144 const ModelHighAPI_RefAttr & theLine2);
146 // TODO(spo): set* (constraints)
148 // TODO(spo): addMirror
150 /// Set constraint value
153 const std::shared_ptr<ModelAPI_Feature> & theConstraint,
154 const ModelHighAPI_Double & theValue);
156 // TODO(spo): setText. Is it necessary as setValue accepts text expressions?
159 std::shared_ptr<ModelAPI_CompositeFeature> compositeFeature() const;
163 //! Pointer on Sketch object
164 typedef std::shared_ptr<SketchAPI_Sketch> SketchPtr;
166 /**\ingroup CPPHighAPI
167 * \brief Create Sketch feature
170 SketchPtr addSketch(const std::shared_ptr<ModelAPI_Document> & thePart,
171 const std::shared_ptr<GeomAPI_Ax3> & thePlane);
173 /**\ingroup CPPHighAPI
174 * \brief Create Sketch feature
177 SketchPtr addSketch(const std::shared_ptr<ModelAPI_Document> & thePart,
178 const ModelHighAPI_Selection & theExternal);
180 /**\ingroup CPPHighAPI
181 * \brief Create Sketch feature
184 SketchPtr addSketch(const std::shared_ptr<ModelAPI_Document> & thePart,
185 const std::string & theExternalName);
187 //--------------------------------------------------------------------------------------
188 //--------------------------------------------------------------------------------------
189 #endif /* SRC_SKETCHAPI_SKETCHAPI_SKETCH_H_ */