1 """Common tools for other modules.
2 Author: Sergey Pokhodenko
3 Copyright (C) 2014-20xx CEA/DEN, EDF R&D
13 # from .sketcher.sketch import Sketch
16 def convert_to_underscore(name):
17 """Convert CamelCase to underscore_case."""
18 s1 = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', name)
19 return re.sub('([a-z0-9])([A-Z])', r'\1_\2', s1).lower()
23 """Class for storing selection."""
25 def __init__(self, *args):
26 """Initialize selection."""
28 self.args = (None, None)
31 if len(args) == 1 and isinstance(args[0], basestring):
35 assert(len(args) > 1 and len(args) < 4)
36 assert(isinstance(args[0], basestring) or
37 isinstance(args[0], ModelAPI.ModelAPI_Result))
38 if isinstance(args[0], basestring):
39 assert(isinstance(args[1], basestring))
40 elif isinstance(args[0], ModelAPI.ModelAPI_Result) or args[0] is None:
41 assert(isinstance(args[1], GeomAPI.GeomAPI_Shape))
45 def fill_attribute(attribute, value):
46 """Set value to attribure.
48 This function processes complex cases.
49 ModelAPI_AttributeSelectionList can accept string, result + shape, list of
50 strings and [result + shape]...
51 ModelAPI_AttributeDouble can accept float and string
53 if (isinstance(attribute, ModelAPI.ModelAPI_AttributeBoolean) or
54 isinstance(attribute, ModelAPI.ModelAPI_AttributeDocRef) or
55 isinstance(attribute, ModelAPI.ModelAPI_AttributeInteger) or
56 isinstance(attribute, ModelAPI.ModelAPI_AttributeReference) or
57 isinstance(attribute, ModelAPI.ModelAPI_AttributeString)
59 attribute.setValue(value)
61 elif isinstance(attribute, ModelAPI.ModelAPI_AttributeDouble):
62 if isinstance(value, basestring):
63 attribute.setText(value)
65 attribute.setValue(value)
67 elif isinstance(attribute, ModelAPI.ModelAPI_AttributeIntArray):
68 attrubute.setSize(len(value))
69 for i in range(len(value)):
70 attrubute.setValue(i, value[i])
72 elif isinstance(attribute, ModelAPI.ModelAPI_AttributeRefAttr):
73 assert(isinstance(value, ModelAPI.ModelAPI_Attribute) or
74 isinstance(value, ModelAPI.ModelAPI_Object))
75 if isinstance(value, ModelAPI.ModelAPI_Attribute):
76 attrubute.setAttr(value)
77 elif isinstance(value, ModelAPI.ModelAPI_Object):
78 attrubute.setObject(value)
80 elif isinstance(attribute, ModelAPI.ModelAPI_AttributeRefList):
85 assert(isinstance(value, collections.Iterable))
87 assert(isinstance(item, ModelAPI.ModelAPI_Object))
88 attribute.append(item)
90 elif isinstance(attribute, ModelAPI.ModelAPI_AttributeSelection):
92 attribute.setValue(None, None)
95 assert(isinstance(value, Selection))
96 attribute.setValue(*value.args)
98 elif isinstance(attribute, ModelAPI.ModelAPI_AttributeSelectionList):
103 assert(isinstance(value, collections.Iterable))
105 assert(isinstance(item, Selection))
106 attribute.append(*item.args)
108 elif (isinstance(attribute, GeomDataAPI.GeomDataAPI_Dir) or
109 isinstance(attribute, GeomDataAPI.GeomDataAPI_Point) or
110 isinstance(attribute, GeomDataAPI.GeomDataAPI_Point2D)
112 assert(isinstance(value, collections.Iterable))
113 attribute.setValue(*value)
116 raise AssertionError("Wrong attribute type: %s" % type(attribute))