Salome HOME
Improve PythonAPI documentstion.
[modules/shaper.git] / src / PythonAPI / model / features / revolution.py
1 """Revolution Interface
2 Author: Sergey Pokhodenko
3 Copyright (C) 2014-20xx CEA/DEN, EDF R&D
4 """
5
6 from model.roots import Interface
7
8
9 def addRevolution(part, *args):
10     """Add an Revolution feature to the Part and return Revolution.
11
12     Pass all args to Revolution __init__ function.
13     """
14     assert(len(args) > 0 and args[0] is not None)
15     feature = part.addFeature("Revolution")
16     return Revolution(feature, *args)
17
18
19 class Revolution(Interface):
20     """Interface class for Revolution features.
21
22     Revolution(feature) -> feature interface without initialization
23     Revolution(feature, base, axis_object, to_angle, from_angle) ->
24         feature interface initialized from arguments:
25         - base -- name, sketch or list of names and sketches
26         - axis_object -- name, edge for axis
27         - to_angle -- upper angle
28         - from_angle -- lower angle
29     Revolution(feature, base, axis_object,
30                to_object, to_offset, from_object, from_offset) ->
31         feature interface initialized from arguments:
32         - base -- name, sketch or list of names and sketches
33         - axis_object -- name, edge for axis
34         - to_object -- upper object (plane)
35         - to_offset -- offset from upper object
36         - from_object -- lower object (plane)
37         - from_offset -- offset from lower object
38     """
39
40     def __init__(self, feature, *args):
41         """x.__init__(...) initializes x; see x.__class__.__doc__ for signature"""
42         Interface.__init__(self, feature)
43         assert(self._feature.getKind() == "Revolution")
44
45         self._base = self._feature.data().selectionList("base")
46         self._axis_object = self._feature.data().selection("axis_object")
47         self._CreationMethod = self._feature.string("CreationMethod")
48         self._to_angle = self._feature.data().real("to_angle")
49         self._from_angle = self._feature.data().real("from_angle")
50         self._to_object = self._feature.data().selection("to_object")
51         self._to_offset = self._feature.data().real("to_offset")
52         self._from_object = self._feature.data().selection("from_object")
53         self._from_offset = self._feature.data().real("from_offset")
54
55         assert(self._base)
56         assert(self._axis_object)
57         assert(self._CreationMethod)
58         assert(self._to_angle)
59         assert(self._from_angle)
60         assert(self._to_object)
61         assert(self._to_offset)
62         assert(self._from_object)
63         assert(self._from_offset)
64
65         if not args:
66             return
67
68         assert(len(args) in (4, 6))
69
70         base, axis_object = args[:2]
71         args = args[2:]
72
73         self.setBase(base)
74         self.setAxisObject(axis_object)
75
76         if len(args) == 4:
77             self.setPlanesAndOffsets(*args)
78         elif len(args) == 2:
79             self.setAngles(*args)
80
81         self._execute()
82         pass
83
84     def __clear(self):
85         self._CreationMethod.setValue("ByAngles")
86         self._fill_attribute(self._to_angle, 0)
87         self._fill_attribute(self._from_angle, 0)
88         self._fill_attribute(self._to_object, None)
89         self._fill_attribute(self._to_offset, 0)
90         self._fill_attribute(self._from_object, None)
91         self._fill_attribute(self._from_offset, 0)
92         pass
93
94     def setBase(self, base):
95         """Modify base attribute of the feature.
96
97         See __init__.
98         """
99         self._fill_attribute(self._base, base)
100         pass
101
102     def setAxisObject(self, axis_object):
103         """Modify axis_object attribute of the feature.
104
105         See __init__.
106         """
107         self._fill_attribute(self._axis_object, axis_object)
108         pass
109
110     def setAngles(self, to_angle, from_angle):
111         """Modify the to_angle, from_angle attributes of the feature.
112
113         See __init__.
114         """
115         self.__clear()
116         self._CreationMethod.setValue("ByAngles")
117         self._fill_attribute(self._to_angle, to_angle)
118         self._fill_attribute(self._from_angle, from_angle)
119         pass
120
121     def setPlanesAndOffsets(self, to_object, to_offset,
122                             from_object, from_offset):
123         """Modify planes and offsets attributes of the feature.
124
125         See __init__.
126         """
127         self.__clear()
128         self._CreationMethod.setValue("ByPlanesAndOffsets")
129         self._fill_attribute(self._to_object, to_object)
130         self._fill_attribute(self._to_offset, to_offset)
131         self._fill_attribute(self._from_object, from_object)
132         self._fill_attribute(self._from_offset, from_offset)
133         pass