Salome HOME
Fix Platine test
[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, **kwargs):
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         self._inversed = self._feature.boolean("InversedArc")
23         if len(args) == 6:
24             self.__createByCoordinates(*args)
25         elif len(args) == 3:
26             self.__createByPoints(*args)
27         else:
28             raise WrongNumberOfArguments(
29                 "Arc takes 3 or 6 arguments (%s given)" % len(args)
30                 )
31         if "inversed" in kwargs:
32             self.setInversed(kwargs["inversed"])
33         self.execute()
34
35
36     ########
37     #
38     # Getters
39     #
40     ########
41
42
43     def center(self):
44         """Return the center point."""
45         return self._center
46
47     def startPoint(self):
48         """Return the start point."""
49         return self._start_point
50
51     def endPoint(self):
52         """Return the end point."""
53         return self._end_point
54
55     def result(self):
56         """Return the arc circular line attribute."""
57         return self._feature.lastResult()
58
59
60     ########
61     #
62     # Set methods
63     #
64     ########
65
66     def setCenter(self, x, y):
67         """Set arc center."""
68         self._center.setValue(x, y)
69
70     def setStartPoint(self, x, y):
71         """Set start point."""
72         self._start_point.setValue(x, y)
73
74     def setEndPoint(self, x, y):
75         """Set end point value."""
76         self._end_point.setValue(x, y)
77
78     def setInversed(self, inversed):
79         self._fillAttribute(self._inversed, inversed)
80
81     ########
82     #
83     # Private methods
84     #
85     ########
86
87
88     def __createByCoordinates(self, center_x, center_y,
89                               start_x, start_y,
90                               end_x, end_y):
91         """Create an arc by point coordinates."""
92         self.setCenter(center_x, center_y)
93         self.setStartPoint(start_x, start_y)
94         self.setEndPoint(end_x, end_y)
95
96     def __createByPoints(self, center, start, end):
97         """Create an arc with point objects."""
98         self.setCenter(center.x(), center.y())
99         self.setStartPoint(start.x(), start.y())
100         self.setEndPoint(end.x(), end.y())