Salome HOME
[PythonAPI / sketcher] Added methods for sketch features modification
[modules/shaper.git] / src / PythonAPI / model / sketcher / line.py
1 from GeomDataAPI import geomDataAPI_Point2D
2 from model.roots import Interface
3 from model.errors import WrongNumberOfArguments
4
5 class Line(Interface):
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")
10
11         # Initialize attributes
12         self._start_point = geomDataAPI_Point2D(
13             self._feature.data().attribute("StartPoint")
14             )
15         self._end_point = geomDataAPI_Point2D(
16             self._feature.data().attribute("EndPoint")
17             )
18
19         # Check that input arguments are not None
20         if args is None:
21             raise WrongNumberOfArguments(
22                 "No argument given, at least one argument needed"
23                 )
24         
25         # Set attribute values and execute
26         if len(args) == 4:
27             self.__createByCoordinates(*args)
28         elif len(args) == 2:
29             self.__createByPoints(*args)
30         elif len(args) == 1:
31             self.__createByName(*args)
32         else:
33             raise WrongNumberOfArguments(
34                 "Arc takes 1, 2 or 4 arguments (%s given)" % len(args)
35                 )
36         self._execute()
37
38     def __createByCoordinates(self, x1, y1, x2, y2):
39         self.setStartPoint(x1, y1)
40         self.setEndPoint(x2, y2)
41
42     def __createByPoints(self, p1, p2):
43         self.setStartPoint(p1.x(), p1.y())
44         self.setEndPoint(p2.x(), p2.y())
45
46     def __createByName(self, name):
47         self._feature.data().selection("External").selectSubShape("EDGE", name)
48     
49     #######
50     #
51     # Set methods
52     #
53     #######
54     
55     def setStartPoint(self, x, y):
56         """Set the start point of the line."""
57         self._start_point.setValue(x, y)
58         
59     def setEndPoint(self, x, y):
60         """Set the end point of the line."""
61         self._end_point.setValue(x, y)
62
63     # TODO : methods below will be removed. 
64     # Kept until all tests have been updated
65     def startPointData(self):
66         return self._start_point
67
68     def endPointData(self):
69         return self._end_point
70
71     def result(self):
72         return self._feature.firstResult()