1 """Sketch circle feature interface."""
3 from GeomDataAPI import geomDataAPI_Point2D
4 from model.errors import WrongNumberOfArguments
5 from model.roots import 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")
13 self._center = geomDataAPI_Point2D(
14 self._feature.data().attribute("ArcCenter")
16 self._start_point = geomDataAPI_Point2D(
17 self._feature.data().attribute("ArcStartPoint")
19 self._end_point = geomDataAPI_Point2D(
20 self._feature.data().attribute("ArcEndPoint")
22 self._inversed = self._feature.boolean("InversedArc")
24 self.__createByCoordinates(*args)
26 self.__createByPoints(*args)
28 raise WrongNumberOfArguments(
29 "Arc takes 3 or 6 arguments (%s given)" % len(args)
31 if "inversed" in kwargs:
32 self.setInversed(kwargs["inversed"])
44 """Return the center point."""
48 """Return the start point."""
49 return self._start_point
52 """Return the end point."""
53 return self._end_point
56 """Return the arc circular line attribute."""
57 return self._feature.lastResult()
66 def setCenter(self, x, y):
68 self._center.setValue(x, y)
70 def setStartPoint(self, x, y):
71 """Set start point."""
72 self._start_point.setValue(x, y)
74 def setEndPoint(self, x, y):
75 """Set end point value."""
76 self._end_point.setValue(x, y)
78 def setInversed(self, inversed):
79 self._fillAttribute(self._inversed, inversed)
88 def __createByCoordinates(self, center_x, center_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)
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())