1 from GeomDataAPI import geomDataAPI_Point2D
2 from model.roots import Interface
3 from model.errors import WrongNumberOfArguments
5 from .entity import Entity
8 """Interface for editing of a sketch line feature."""
9 def __init__(self, feature, *args):
10 Entity.__init__(self, feature)
11 assert(self._feature.getKind() == "SketchLine")
13 # Initialize attributes
14 self._start_point = geomDataAPI_Point2D(
15 self._feature.data().attribute("StartPoint")
17 self._end_point = geomDataAPI_Point2D(
18 self._feature.data().attribute("EndPoint")
20 self._external = self._feature.selection("External")
22 # If no arguments are given the attributes of the feature
27 # Set attribute values and execute
29 self.__createByCoordinates(*args)
31 self.__createByPoints(*args)
33 self.__createByName(*args)
35 raise WrongNumberOfArguments(
36 "Arc takes 1, 2 or 4 arguments (%s given)" % len(args)
40 def __createByCoordinates(self, x1, y1, x2, y2):
41 self.setStartPoint(x1, y1)
42 self.setEndPoint(x2, y2)
44 def __createByPoints(self, p1, p2):
45 self.setStartPoint(p1.x(), p1.y())
46 self.setEndPoint(p2.x(), p2.y())
48 def __createByName(self, name):
49 self.setExternal(name)
57 def setStartPoint(self, x, y):
58 """Set the start point of the line."""
59 self._start_point.setValue(x, y)
61 def setEndPoint(self, x, y):
62 """Set the end point of the line."""
63 self._end_point.setValue(x, y)
65 # TODO : methods below will be removed.
66 # Kept until all tests have been updated
67 def startPointData(self):
68 return self._start_point
70 def endPointData(self):
71 return self._end_point
73 def setExternal(self, name):
74 """Set external edge"""
75 self._external.selectSubShape("EDGE", name)
78 return self._feature.firstResult()