1 """Revolution Interface
2 Author: Sergey Pokhodenko
3 Copyright (C) 2014-20xx CEA/DEN, EDF R&D
6 from model.roots import Interface
9 def addRevolution(part, *args):
10 """Add an Revolution feature to the Part and return Revolution.
12 Pass all args to Revolution __init__ function.
14 assert(len(args) > 0 and args[0] is not None)
15 feature = part.addFeature("Revolution")
16 return Revolution(feature, *args)
19 class Revolution(Interface):
20 """Interface class for Revolution features.
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
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")
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")
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)
68 assert(len(args) in (4, 6))
70 base, axis_object = args[:2]
74 self.setAxisObject(axis_object)
77 self.setPlanesAndOffsets(*args)
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)
94 def setBase(self, base):
95 """Modify base attribute of the feature.
99 self._fill_attribute(self._base, base)
102 def setAxisObject(self, axis_object):
103 """Modify axis_object attribute of the feature.
107 self._fill_attribute(self._axis_object, axis_object)
110 def setAngles(self, to_angle, from_angle):
111 """Modify the to_angle, from_angle attributes of the feature.
116 self._CreationMethod.setValue("ByAngles")
117 self._fill_attribute(self._to_angle, to_angle)
118 self._fill_attribute(self._from_angle, from_angle)
121 def setPlanesAndOffsets(self, to_object, to_offset,
122 from_object, from_offset):
123 """Modify planes and offsets attributes of the feature.
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)