1 from GeomDataAPI import geomDataAPI_Point2D
2 from model.roots import Interface
3 from model.errors import WrongNumberOfArguments
6 """Interface for editing of a sketch line feature."""
7 def __init__(self, feature, *args):
8 Interface.__init__(self, feature)
9 assert(self._feature.getKind() == "SketchLine")
11 # Initialize attributes
12 self._start_point = geomDataAPI_Point2D(
13 self._feature.data().attribute("StartPoint")
15 self._end_point = geomDataAPI_Point2D(
16 self._feature.data().attribute("EndPoint")
19 # Check that input arguments are not None
21 raise WrongNumberOfArguments(
22 "No argument given, at least one argument needed"
25 # Set attribute values and execute
27 self.__createByCoordinates(*args)
29 self.__createByPoints(*args)
31 self.__createByName(*args)
33 raise WrongNumberOfArguments(
34 "Arc takes 1, 2 or 4 arguments (%s given)" % len(args)
38 def __createByCoordinates(self, x1, y1, x2, y2):
39 self.setStartPoint(x1, y1)
40 self.setEndPoint(x2, y2)
42 def __createByPoints(self, p1, p2):
43 self.setStartPoint(p1.x(), p1.y())
44 self.setEndPoint(p2.x(), p2.y())
46 def __createByName(self, name):
47 self._feature.data().selection("External").selectSubShape("EDGE", name)
55 def setStartPoint(self, x, y):
56 """Set the start point of the line."""
57 self._start_point.setValue(x, y)
59 def setEndPoint(self, x, y):
60 """Set the end point of the line."""
61 self._end_point.setValue(x, y)
63 # TODO : methods below will be removed.
64 # Kept until all tests have been updated
65 def startPointData(self):
66 return self._start_point
68 def endPointData(self):
69 return self._end_point
72 return self._feature.firstResult()