Salome HOME
Add construction plugin without tests.
[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
31     def centerData(self):
32         """Return the center point data."""
33         return self._center
34     
35     def startPointData(self):
36         """Return the start point data."""
37         return self._start_point
38     
39     def endPointData(self):
40         """Return the end point data."""
41         return self._end_point
42
43     def result(self):
44         """Return the arc circular line attribute."""
45         return self._feature.lastResult()
46     
47     ########
48     #
49     # Private methods
50     #
51     ########
52     
53     def __createByCoordinates(self, center_x, center_y, 
54                               start_x, start_y, 
55                               end_x, end_y):
56         """Create an arc by point coordinates."""
57         self._center.setValue(center_x, center_y)
58         self._start_point.setValue(start_x, start_y)
59         self._end_point.setValue(end_x, end_y)
60         self._feature.execute()
61         
62     def __createByPoints(self, center, start, end):
63         """Create an arc with point objects."""
64         self._center.setValue(center.x(), center.y())
65         self._start_point.setValue(start.x(), start.y())
66         self._end_point.setValue(end.x(), end.y())
67         self._feature.execute()
68         
69         
70         
71         
72