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;
 }
Пример #3
0
 public BoundaryCondition(BoundaryConditionsType type, Vector value)
 {
     Type  = type;
     Value = value;
 }