+def getParameterInDict(nameList, parametersDict, default = None):
+ """
+ This method finds the value of a parameter in the parameters
+ dictionary. The argument is a list because some parameters can have
+ several different names.
+ """
+ for name in nameList:
+ if parametersDict.has_key(name):
+ return parametersDict[name]
+ return default
+
+
+class GeneralBeam(RectangularBeam):
+ """
+ This class defines a beam with a generic section. It is represented as a
+ full rectangular beam with the following parameters:
+
+ * HY1 = sqrt(12 * IZ1 / A1)
+ * HZ1 = sqrt(12 * IY1 / A1)
+ * HY2 = sqrt(12 * IZ2 / A2)
+ * HZ2 = sqrt(12 * IY2 / A2)
+
+ See class :class:`StructuralElementPart` for the description of the other
+ parameters.
+ """
+
+ def __init__(self, studyId, groupName, groupGeomObj, parameters,
+ name = Beam.DEFAULT_NAME, color = None):
+ self.IY1 = getParameterInDict(["IY1", "IY"], parameters)
+ self.IZ1 = getParameterInDict(["IZ1", "IZ"], parameters)
+ self.IY2 = getParameterInDict(["IY2", "IY"], parameters)
+ self.IZ2 = getParameterInDict(["IZ2", "IZ"], parameters)
+ self.A1 = getParameterInDict(["A1", "A"], parameters)
+ self.A2 = getParameterInDict(["A2", "A"], parameters)
+ parameters["HY1"] = math.sqrt(12 * self.IZ1 / self.A1)
+ parameters["HZ1"] = math.sqrt(12 * self.IY1 / self.A1)
+ parameters["HY2"] = math.sqrt(12 * self.IZ2 / self.A2)
+ parameters["HZ2"] = math.sqrt(12 * self.IY2 / self.A2)
+
+ if color is None:
+ if parameters.has_key("IY1"): # variable section
+ color = LIGHT_GREEN
+ else: # constant section
+ color = GREEN
+
+ RectangularBeam.__init__(self, studyId, groupName, groupGeomObj, parameters,
+ name, color)
+
+