Salome HOME
[PythonAPI / sketcher] Added methods for sketch features modification
[modules/shaper.git] / src / PythonAPI / model / sketcher / arc.py
1 """Sketch circle feature interface."""
2
3 from GeomDataAPI import geomDataAPI_Point2D
4 from model.errors import WrongNumberOfArguments
5 from model.roots import Interface
6
7 class Arc(Interface):
8     """Interface to a sketch arc feature."""
9     def __init__(self, feature, *args):
10         Interface.__init__(self, feature)
11         assert(self._feature.getKind() == "SketchArc")
12
13         self._center = geomDataAPI_Point2D(
14             self._feature.data().attribute("ArcCenter")
15             )
16         self._start_point = geomDataAPI_Point2D(
17             self._feature.data().attribute("ArcStartPoint")
18             )
19         self._end_point = geomDataAPI_Point2D(
20             self._feature.data().attribute("ArcEndPoint")
21             )
22         if len(args) == 6:
23             self.__createByCoordinates(*args)
24         elif len(args) == 3:
25             self.__createByPoints(*args)
26         else:
27             raise WrongNumberOfArguments(
28                 "Arc takes 3 or 6 arguments (%s given)" % len(args)
29                 )
30         self._execute()
31         
32     ########
33     #
34     # Set methods
35     #
36     ########
37     
38     def setCenter(self, x, y):
39         """Set arc center."""
40         self._center.setValue(x, y)
41         
42     def setStartPoint(self, x, y):
43         """Set start point."""
44         self._start_point.setValue(x, y)
45         
46     def setEndPoint(self, x, y):
47         """Set end point value."""
48         self._end_point.setValue(x, y)
49         
50     
51     ########
52     #
53     # Getters
54     #
55     ########
56
57
58     def centerData(self):
59         """Return the center point data."""
60         return self._center
61
62     def startPointData(self):
63         """Return the start point data."""
64         return self._start_point
65
66     def endPointData(self):
67         """Return the end point data."""
68         return self._end_point
69
70     def result(self):
71         """Return the arc circular line attribute."""
72         return self._feature.lastResult()
73
74
75     ########
76     #
77     # Private methods
78     #
79     ########
80
81
82     def __createByCoordinates(self, center_x, center_y,
83                               start_x, start_y,
84                               end_x, end_y):
85         """Create an arc by point coordinates."""
86         self.setCenter(center_x, center_y)
87         self.setStartPoint(start_x, start_y)
88         self.setEndPoint(end_x, end_y)
89
90     def __createByPoints(self, center, start, end):
91         """Create an arc with point objects."""
92         self.setCenter(center.x(), center.y())
93         self.setStartPoint(start.x(), start.y())
94         self.setEndPoint(end.x(), end.y())