SHAPER  9.12.0
SketchAPI_Ellipse.h
1 // Copyright (C) 2014-2023 CEA, EDF
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 SketchAPI_Ellipse_H_
21 #define SketchAPI_Ellipse_H_
22 
23 #include "SketchAPI.h"
24 #include "SketchAPI_SketchEntity.h"
25 
26 #include <SketchPlugin_Ellipse.h>
27 
29 
30 typedef std::pair<std::string, std::string> PairOfStrings;
31 
36 {
37 public:
39  SKETCHAPI_EXPORT
40  explicit SketchAPI_Ellipse(const std::shared_ptr<ModelAPI_Feature>& theFeature);
41 
43  SKETCHAPI_EXPORT
44  SketchAPI_Ellipse(const std::shared_ptr<ModelAPI_Feature>& theFeature,
45  double theCenterX, double theCenterY,
46  double theFocusX, double theFocusY,
47  double theMinorRadius);
48 
50  SKETCHAPI_EXPORT
51  SketchAPI_Ellipse(const std::shared_ptr<ModelAPI_Feature>& theFeature,
52  const std::shared_ptr<GeomAPI_Pnt2d>& theCenter,
53  const std::shared_ptr<GeomAPI_Pnt2d>& theFocus,
54  double theMinorRadius);
55 
57  SKETCHAPI_EXPORT
58  SketchAPI_Ellipse(const std::shared_ptr<ModelAPI_Feature>& theFeature,
59  const ModelHighAPI_Selection& theExternal);
60 
62  SKETCHAPI_EXPORT
63  SketchAPI_Ellipse(const std::shared_ptr<ModelAPI_Feature>& theFeature,
64  const std::wstring& theExternalName);
65 
67  SKETCHAPI_EXPORT
68  virtual ~SketchAPI_Ellipse();
69 
70  INTERFACE_10(SketchPlugin_Ellipse::ID(),
91 
92 
93  SKETCHAPI_EXPORT
94  void setByCenterFocusAndRadius(double theCenterX, double theCenterY,
95  double theFocusX, double theFocusY,
96  double theMinorRadius);
97 
99  SKETCHAPI_EXPORT
100  void setByCenterFocusAndRadius(const std::shared_ptr<GeomAPI_Pnt2d>& theCenter,
101  const std::shared_ptr<GeomAPI_Pnt2d>& theFocus,
102  double theMinorRadius);
103 
105  SKETCHAPI_EXPORT
106  void setByExternal(const ModelHighAPI_Selection& theExternal);
107 
109  SKETCHAPI_EXPORT
110  void setByExternalName(const std::wstring& theExternalName);
111 
113  SKETCHAPI_EXPORT
114  void setCenter(double theX, double theY);
115 
117  SKETCHAPI_EXPORT
118  void setCenter(const std::shared_ptr<GeomAPI_Pnt2d>& theCenter);
119 
121  SKETCHAPI_EXPORT
122  void setFocus(double theX, double theY);
123 
125  SKETCHAPI_EXPORT
126  void setFocus(const std::shared_ptr<GeomAPI_Pnt2d>& theFocus);
127 
129  SKETCHAPI_EXPORT
130  void setMinorRadius(double theRadius);
131 
136  SKETCHAPI_EXPORT
137  std::list<std::shared_ptr<SketchAPI_SketchEntity> > construction(
138  const std::wstring& center = std::wstring(),
139  const std::wstring& firstFocus = std::wstring(),
140  const std::wstring& secondFocus = std::wstring(),
141  const std::wstring& majorAxisStart = std::wstring(),
142  const std::wstring& majorAxisEnd = std::wstring(),
143  const std::wstring& minorAxisStart = std::wstring(),
144  const std::wstring& minorAxisEnd = std::wstring(),
145  const std::wstring& majorAxis = std::wstring(),
146  const std::wstring& minorAxis = std::wstring()) const;
147 
149  SKETCHAPI_EXPORT
150  virtual void dump(ModelHighAPI_Dumper& theDumper) const;
151 
152 private:
158  static void collectAuxiliaryFeatures(FeaturePtr theEllipse,
159  const PairOfStrings& theMajorAxis,
160  const PairOfStrings& theMinorAxis,
161  std::map<std::string, FeaturePtr>& theAttrToFeature);
162 
168  static void dumpConstructionEntities(ModelHighAPI_Dumper& theDumper,
169  const FeaturePtr& theEllipse,
170  const std::list<PairOfStrings>& theAttributes,
171  const std::map<std::string, FeaturePtr>& theAuxFeatures);
172 
175  static std::list<std::shared_ptr<SketchAPI_SketchEntity> > buildConstructionEntities(
176  const FeaturePtr& theEllipse,
177  const std::list<PairOfStrings>& theAttributes,
178  const std::wstring& theCenter,
179  const std::wstring& theFirstFocus,
180  const std::wstring& theSecondFocus,
181  const std::wstring& theMajorAxisStart,
182  const std::wstring& theMajorAxisEnd,
183  const std::wstring& theMinorAxisStart,
184  const std::wstring& theMinorAxisEnd,
185  const std::wstring& theMajorAxis,
186  const std::wstring& theMinorAxis);
187 
188  friend class SketchAPI_EllipticArc;
189 };
190 
192 typedef std::shared_ptr<SketchAPI_Ellipse> EllipsePtr;
193 
194 #endif // SketchPlugin_Ellipse_H_
2D point defined by two coordinates
Definition: GeomAPI_Pnt2d.h:36
Attribute that contains 2D point coordinates.
Definition: GeomDataAPI_Point2D.h:37
Attribute that contains real value with double precision.
Definition: ModelAPI_AttributeDouble.h:34
Attribute that contains reference to the sub-shape of some result, the selected shape.
Definition: ModelAPI_AttributeSelection.h:35
Dump engine for the model.
Definition: ModelHighAPI_Dumper.h:81
Class for filling ModelAPI_AttributeSelection.
Definition: ModelHighAPI_Selection.h:49
Interface for Ellipse feature.
Definition: SketchAPI_Ellipse.h:36
virtual void dump(ModelHighAPI_Dumper &theDumper) const
Dump wrapped feature.
Definition: SketchAPI_Ellipse.cpp:377
virtual std::shared_ptr< ModelAPI_AttributeDouble > minorRadius() const
Minor radius.
Definition: SketchAPI_Ellipse.h:90
virtual std::shared_ptr< GeomDataAPI_Point2D > center() const
Center point.
Definition: SketchAPI_Ellipse.h:90
void setByExternalName(const std::wstring &theExternalName)
Set by external name.
Definition: SketchAPI_Ellipse.cpp:118
void setFocus(double theX, double theY)
Set focus.
Definition: SketchAPI_Ellipse.cpp:136
void setMinorRadius(double theRadius)
Set radius.
Definition: SketchAPI_Ellipse.cpp:148
virtual std::shared_ptr< GeomDataAPI_Point2D > minorAxisNegative() const
Start point of minor axis.
Definition: SketchAPI_Ellipse.h:90
std::list< std::shared_ptr< SketchAPI_SketchEntity > > construction(const std::wstring &center=std::wstring(), const std::wstring &firstFocus=std::wstring(), const std::wstring &secondFocus=std::wstring(), const std::wstring &majorAxisStart=std::wstring(), const std::wstring &majorAxisEnd=std::wstring(), const std::wstring &minorAxisStart=std::wstring(), const std::wstring &minorAxisEnd=std::wstring(), const std::wstring &majorAxis=std::wstring(), const std::wstring &minorAxis=std::wstring()) const
Create construction elements (focuses, axes etc.).
Definition: SketchAPI_Ellipse.cpp:274
void setByExternal(const ModelHighAPI_Selection &theExternal)
Set by external.
Definition: SketchAPI_Ellipse.cpp:112
virtual std::shared_ptr< GeomDataAPI_Point2D > secondFocus() const
Focus in negative direction of a major axis.
Definition: SketchAPI_Ellipse.h:90
void setByCenterFocusAndRadius(double theCenterX, double theCenterY, double theFocusX, double theFocusY, double theMinorRadius)
Set by center, focus and radius.
Definition: SketchAPI_Ellipse.cpp:90
virtual std::shared_ptr< GeomDataAPI_Point2D > minorAxisPositive() const
End point of minor axis.
Definition: SketchAPI_Ellipse.h:90
virtual std::shared_ptr< GeomDataAPI_Point2D > majorAxisPositive() const
End point of major axis.
Definition: SketchAPI_Ellipse.h:90
virtual std::shared_ptr< ModelAPI_AttributeDouble > majorRadius() const
Major radius.
Definition: SketchAPI_Ellipse.h:90
virtual std::shared_ptr< GeomDataAPI_Point2D > majorAxisNegative() const
Start point of major axis.
Definition: SketchAPI_Ellipse.h:90
virtual std::shared_ptr< ModelAPI_AttributeSelection > external() const
External.
Definition: SketchAPI_Ellipse.h:90
virtual ~SketchAPI_Ellipse()
Destructor.
Definition: SketchAPI_Ellipse.cpp:86
SketchAPI_Ellipse(const std::shared_ptr< ModelAPI_Feature > &theFeature)
Constructor without values.
Definition: SketchAPI_Ellipse.cpp:40
virtual std::shared_ptr< GeomDataAPI_Point2D > firstFocus() const
Focus in positive direction of a major axis.
Definition: SketchAPI_Ellipse.h:90
void setCenter(double theX, double theY)
Set center.
Definition: SketchAPI_Ellipse.cpp:124
Interface for Elliptic Arc feature.
Definition: SketchAPI_EllipticArc.h:34
Base class for Sketch feature interfaces.
Definition: SketchAPI_SketchEntity.h:38
static const std::string & MINOR_AXIS_END_ID()
2D point - end point of minor axis
Definition: SketchPlugin_Ellipse.h:80
static const std::string & FIRST_FOCUS_ID()
2D point - focus of the ellipse
Definition: SketchPlugin_Ellipse.h:48
static const std::string & MINOR_AXIS_START_ID()
2D point - start point of minor axis
Definition: SketchPlugin_Ellipse.h:74
static const std::string & ID()
Ellipse feature kind.
Definition: SketchPlugin_Ellipse.h:34
static const std::string & SECOND_FOCUS_ID()
2D point - second focus of the ellipse
Definition: SketchPlugin_Ellipse.h:54
static const std::string & MAJOR_AXIS_START_ID()
2D point - start point of major axis
Definition: SketchPlugin_Ellipse.h:61
static const std::string & MINOR_RADIUS_ID()
Minor radius of the ellipse.
Definition: SketchPlugin_Ellipse.h:94
static const std::string & CENTER_ID()
2D point - center of the ellipse
Definition: SketchPlugin_Ellipse.h:41
static const std::string & MAJOR_AXIS_END_ID()
2D point - end point of major axis
Definition: SketchPlugin_Ellipse.h:67
static const std::string & MAJOR_RADIUS_ID()
Major radius of the ellipse.
Definition: SketchPlugin_Ellipse.h:87
static const std::string & EXTERNAL_ID()
Reference to the external edge or vertex as a AttributeSelection.
Definition: SketchPlugin_SketchEntity.h:55