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 on an Revolution feature."""
22 def __init__(self, feature, base=None, axis_object=None, *args):
23 """Initialize an Revolution feature with given parameters.
25 Expected arguments for all modes:
26 feature -- an Revolution feature
28 Expected arguments for initializing the feature:
29 base -- name, sketch or list of names and sketches.
30 If base is None then don't change the feature.
31 axis_object -- name, edge for axis
33 For ByAngles mode (expect 2 arguments):
34 to_angle -- upper angle
35 from_angle -- lower angle
37 For ByPlanesAndOffsets mode (expect 4 arguments):
38 to_object -- upper object (plane)
39 to_offset -- offset from upper object
40 from_object -- lower object (plane)
41 from_offset -- offset from lower object
43 Interface.__init__(self, feature)
44 assert(self._feature.getKind() == "Revolution")
46 self._base = self._feature.data().selectionList("base")
47 self._axis_object = self._feature.data().selection("axis_object")
48 self._CreationMethod = self._feature.string("CreationMethod")
49 self._to_angle = self._feature.data().real("to_angle")
50 self._from_angle = self._feature.data().real("from_angle")
51 self._to_object = self._feature.data().selection("to_object")
52 self._to_offset = self._feature.data().real("to_offset")
53 self._from_object = self._feature.data().selection("from_object")
54 self._from_offset = self._feature.data().real("from_offset")
57 assert(self._axis_object)
58 assert(self._CreationMethod)
59 assert(self._to_angle)
60 assert(self._from_angle)
61 assert(self._to_object)
62 assert(self._to_offset)
63 assert(self._from_object)
64 assert(self._from_offset)
70 self.__setAxisObject(axis_object)
73 self.__createByPlanesAndOffsets(*args)
75 self.__createByAngles(*args)
78 "Revolution takes 5 or 7 arguments (%s given)" %
83 def __setBase(self, base):
84 self._fill_attribute(self._base, base)
87 def __setAxisObject(self, axis_object):
88 self._fill_attribute(self._axis_object, axis_object)
92 self._CreationMethod.setValue("ByAngles")
93 self._fill_attribute(self._to_angle, 0)
94 self._fill_attribute(self._from_angle, 0)
95 self._fill_attribute(self._to_object, None)
96 self._fill_attribute(self._to_offset, 0)
97 self._fill_attribute(self._from_object, None)
98 self._fill_attribute(self._from_offset, 0)
101 def __createByAngles(self, to_angle, from_angle):
103 self._CreationMethod.setValue("ByAngles")
104 self._fill_attribute(self._to_angle, to_angle)
105 self._fill_attribute(self._from_angle, from_angle)
108 def __createByPlanesAndOffsets(self, to_object, to_offset,
109 from_object, from_offset):
111 self._CreationMethod.setValue("ByPlanesAndOffsets")
112 self._fill_attribute(self._to_object, to_object)
113 self._fill_attribute(self._to_offset, to_offset)
114 self._fill_attribute(self._from_object, from_object)
115 self._fill_attribute(self._from_offset, from_offset)
118 def setBase(self, base):
119 """Modify base attribute of the feature.
126 def setAxisObject(self, axis_object):
127 """Modify axis_object attribute of the feature.
131 self.__setAxisObject(axis_object)
134 def setAngles(self, *args):
135 """Modify the to_angle, from_angle attributes of the feature.
139 self.__createByAngles(*args)
142 def setPlanesAndOffsets(self, *args):
143 """Modify planes and offsets attributes of the feature.
147 self.__createByPlanesAndOffsets(*args)