private Restraint GetRestraintCode(DB.Element elem, BoundaryConditionsType type, int presetState) { if (presetState == 0) { return(new Restraint(RestraintType.Fixed)); } else if (presetState == 1) { return(new Restraint(RestraintType.Pinned)); } else if (presetState == 2) { return(new Restraint(RestraintType.Roller)); } var boundaryParams = new BuiltInParameter[] { BuiltInParameter.BOUNDARY_DIRECTION_X, BuiltInParameter.BOUNDARY_DIRECTION_Y, BuiltInParameter.BOUNDARY_DIRECTION_Z, BuiltInParameter.BOUNDARY_DIRECTION_ROT_X, BuiltInParameter.BOUNDARY_DIRECTION_ROT_Y, BuiltInParameter.BOUNDARY_DIRECTION_ROT_Z }; var springValueParams = new BuiltInParameter[] { BuiltInParameter.BOUNDARY_RESTRAINT_X, BuiltInParameter.BOUNDARY_RESTRAINT_Y, BuiltInParameter.BOUNDARY_RESTRAINT_Z, BuiltInParameter.BOUNDARY_RESTRAINT_ROT_X, BuiltInParameter.BOUNDARY_RESTRAINT_ROT_Y, BuiltInParameter.BOUNDARY_RESTRAINT_ROT_Z, }; var linSpringValueParams = new BuiltInParameter[] { BuiltInParameter.BOUNDARY_LINEAR_RESTRAINT_X, BuiltInParameter.BOUNDARY_LINEAR_RESTRAINT_Y, BuiltInParameter.BOUNDARY_LINEAR_RESTRAINT_Z, BuiltInParameter.BOUNDARY_LINEAR_RESTRAINT_ROT_X, }; var areaSpingValueParams = new BuiltInParameter[] { BuiltInParameter.BOUNDARY_AREA_RESTRAINT_X, BuiltInParameter.BOUNDARY_AREA_RESTRAINT_Y, BuiltInParameter.BOUNDARY_AREA_RESTRAINT_Z, BuiltInParameter.BOUNDARY_LINEAR_RESTRAINT_ROT_X, }; string code = ""; var springStiffness = new double[6]; for (int i = 0; i < boundaryParams.Length; i++) { var value = GetParamValue <int>(elem, boundaryParams[i]); switch (value) { case 0: code = code + "F"; //fixed break; case 1: code = code + "R"; //released break; case 2: code = code + "K"; //spring if (type == BoundaryConditionsType.Line) { switch (boundaryParams[i]) { case BuiltInParameter.BOUNDARY_DIRECTION_X: springStiffness[i] = GetParamValue <double>(elem, linSpringValueParams[0]); // kN/m² break; case BuiltInParameter.BOUNDARY_DIRECTION_Y: springStiffness[i] = GetParamValue <double>(elem, linSpringValueParams[1]); // kN/m² break; case BuiltInParameter.BOUNDARY_DIRECTION_Z: springStiffness[i] = GetParamValue <double>(elem, linSpringValueParams[2]); // kN/m² break; case BuiltInParameter.BOUNDARY_DIRECTION_ROT_X: springStiffness[i] = GetParamValue <double>(elem, linSpringValueParams[3]); // kN-m/°/m break; default: springStiffness[i] = 0; break; } } else if (type == BoundaryConditionsType.Area) { switch (boundaryParams[i]) { case BuiltInParameter.BOUNDARY_DIRECTION_X: springStiffness[i] = GetParamValue <double>(elem, areaSpingValueParams[0]); // kN/m² break; case BuiltInParameter.BOUNDARY_DIRECTION_Y: springStiffness[i] = GetParamValue <double>(elem, areaSpingValueParams[1]); // kN/m² break; case BuiltInParameter.BOUNDARY_DIRECTION_Z: springStiffness[i] = GetParamValue <double>(elem, areaSpingValueParams[2]); // kN/m² break; case BuiltInParameter.BOUNDARY_DIRECTION_ROT_X: springStiffness[i] = GetParamValue <double>(elem, areaSpingValueParams[3]); // kN-m/°/m break; default: springStiffness[i] = 0; break; } } else { springStiffness[i] = GetParamValue <double>(elem, springValueParams[i]); } break; default: return(null); } } var restraint = new Restraint(code, springStiffness[0], springStiffness[1], springStiffness[2], springStiffness[3], springStiffness[4], springStiffness[5]); return(restraint); }
public BoundaryCondition(BoundaryConditionsType type, Vector value) { Type = type; Value = value; }