]> SALOME platform Git repositories - modules/shaper.git/blob - src/PythonAPI/modeler/sketcher/line.py
Salome HOME
[PythonAPI] refactoring sketcher API further
[modules/shaper.git] / src / PythonAPI / modeler / sketcher / line.py
1 from GeomDataAPI import geomDataAPI_Point2D
2
3 def addLine(sketch, *args):
4     sketch_feature = sketch.addFeature("SketchLine")
5     return LineInterface(sketch_feature, *args)
6     
7     
8 class LineInterface():
9     """Interface for editing of a sketch line feature."""
10     def __init__(self, line_feature, *args):
11         self._feature = line_feature
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         if len(args) == 4:
19             self.__createByCoordinates(*args)
20         elif len(args) == 2:
21             self.__createByPoints(*args)
22         elif len(args) == 1:
23             self.__createByName(sketch, *args)
24         else:
25             raise Exception("cannot create the Line")
26
27     def __createByCoordinates(self, x1, y1, x2, y2):
28         self._start_point.setValue(x1, y1)
29         self._end_point.setValue(x2, y2)
30         self._feature.execute()
31
32     def __createByPoints(self, p1, p2):
33         self._start_point.setValue(p1.x(), p1.y())
34         self._end_point.setValue(p2.x(), p2.y())
35         self._feature.execute()
36
37     def __createByName(self, sketch, name):
38         self._feature.data().selection("External").selectSubShape("EDGE", name)
39         self._feature.execute()
40         rigid = sketch.addFeature("SketchConstraintRigid")
41         rigid.refattr("ConstraintEntityA").setObject( self._feature.firstResult() )
42
43     def startPointData (self):
44         return self._start_point
45
46     def endPointData (self):
47         return self._end_point
48
49     def result (self):
50         return self._feature.firstResult()