//Changes the cross-section into RFEM cross section
        private static string getRName(CroSec kCrossSection)
        {
            string kName = kCrossSection.name;

            if (kName.Length >= 4)
            {
                if (kName.Substring(0, 3) == "IPE")
                {
                    return(kName.Substring(0, 3) + " " + kName.Substring(3));
                }
                else if (kName.Substring(0, 4) == "RHSC")
                {
                    return("RHS" + " " + kName.Substring(4).Split('.')[0] + " (Ruukki)");
                }
                else if (kName.Substring(0, 4) == "SHSC")
                {
                    string[] size = kName.Substring(4).Split('x');
                    return("SHS" + " " + size[0] + "x" + size[0] + "x" + size[1].Split('.')[0] + " (Ruukki)");
                }
            }
            if (kName == "")
            {
                if (kCrossSection.GetType() == typeof(Karamba.CrossSections.CroSec_Trapezoid))
                {
                    return("SB " + (kCrossSection.dims[4] * 1000).ToString() + "/" + (kCrossSection.dims[2] * 1000).ToString() + "/" +
                           (kCrossSection.dims[0] * 1000).ToString());
                }
                else if (kCrossSection.GetType() == typeof(Karamba.CrossSections.CroSec_I))
                {
                    return("IU " + (kCrossSection.dims[0] * 1000).ToString() + "/" + (kCrossSection.dims[4] * 1000).ToString() + "/" +
                           (kCrossSection.dims[5] * 1000).ToString() + "/" + (kCrossSection.dims[1] * 1000).ToString() + "/" +
                           (kCrossSection.dims[2] * 1000).ToString() + "/" + (kCrossSection.dims[3] * 1000).ToString() + "/" +
                           (kCrossSection.dims[6] * 1000).ToString() + "/" + (kCrossSection.dims[6] * 1000).ToString());
                }

                // Box not working yet.

                /*
                 * else if (kCrossSection.GetType() == typeof(Karamba.CrossSections.CroSec_Box))
                 * {
                 *  return "TR " + (kCrossSection.dims[4] * 1000).ToString() + "/" + (kCrossSection.dims[5] * 1000).ToString() + "/" +
                 *      (kCrossSection.dims[1] * 1000).ToString() + "/" + (kCrossSection.dims[0] * 1000).ToString() + "/" +
                 *      (kCrossSection.dims[2] * 1000).ToString() + "/" + (kCrossSection.dims[3] * 1000).ToString();
                 * }
                 */
            }


            return("RECHTECK 100/200"); // Only IPE cross sections are implemented yet.
        }
 //Gets material from the RFEM material library
 private static int getRMaterial(Karamba.Models.Model kModel, CroSec kCrossSection)
 {
     if (kCrossSection.elemIds.Count == 1 && kCrossSection.elemIds[0] == "")
     {
         foreach (Karamba.Materials.FemMaterial material in kModel.materials)
         {
             if (material.elemIds.Count != 0)
             {
                 return((int)material.ind + 1);
             }
         }
     }
     else
     {
         foreach (Karamba.Materials.FemMaterial material in kModel.materials)
         {
             if (material.elemIds.Count != 0 && material.elemIds.Contains(kCrossSection.elemIds[0]))
             {
                 return((int)material.ind + 1);
             }
         }
     }
     return(1);
 }
Esempio n. 3
0
        private static void CheckSecBraceIdMatching(IEnumerable <StbSecBrace_S> braces, CroSec k3dCroSec, string steelShapeName)
        {
            if (braces == null)
            {
                return;
            }
            foreach (StbSecBrace_S brace in braces)
            {
                var      memberFigureName = string.Empty;
                object[] figures          = brace.StbSecSteelFigureBrace_S.Items;
                switch (figures[0])
                {
                case StbSecSteelBrace_S_Same same:
                    memberFigureName = same.shape;
                    break;

                case StbSecSteelBrace_S_NotSame _:
                    memberFigureName = new[] { figures[0] as StbSecSteelBrace_S_NotSame, figures[1] as StbSecSteelBrace_S_NotSame }
                    .First(figure => figure.pos == StbSecSteelBrace_S_NotSamePos.BOTTOM).shape;
                    break;

                case StbSecSteelBrace_S_ThreeTypes _:
                    memberFigureName = new[] { figures[0] as StbSecSteelBrace_S_ThreeTypes, figures[1] as StbSecSteelBrace_S_ThreeTypes, figures[2] as StbSecSteelBrace_S_ThreeTypes }
                    .First(figure => figure.pos == StbSecSteelBrace_S_ThreeTypesPos.CENTER).shape;
                    break;
                }
                if (memberFigureName == steelShapeName)
                {
                    k3dCroSec.AddElemId("Id" + brace.id);
                }
            }
        }
Esempio n. 4
0
        private static void CheckSecBeamIdMatching(IEnumerable <StbSecBeam_S> beams, CroSec k3dCroSec, string steelShapeName)
        {
            if (beams == null)
            {
                return;
            }
            foreach (StbSecBeam_S beam in beams)
            {
                var      memberFigureName = string.Empty;
                object[] figures          = beam.StbSecSteelFigureBeam_S.Items;
                switch (figures[0])
                {
                case StbSecSteelBeam_S_Straight straight:
                    memberFigureName = straight.shape;
                    break;

                case StbSecSteelBeam_S_Taper _:
                    memberFigureName = new[] { figures[0] as StbSecSteelBeam_S_Taper, figures[1] as StbSecSteelBeam_S_Taper }
                    .First(figure => figure.pos == StbSecSteelBeam_S_TaperPos.START).shape;
                    break;

                case StbSecSteelBeam_S_Joint _:
                    var joints = figures.Length == 2
                             ? new[] { figures[0] as StbSecSteelBeam_S_Joint, figures[1] as StbSecSteelBeam_S_Joint }
                             : new[] { figures[0] as StbSecSteelBeam_S_Joint, figures[1] as StbSecSteelBeam_S_Joint, figures[2] as StbSecSteelBeam_S_Joint };
                    memberFigureName = joints.First(figure => figure.pos == StbSecSteelBeam_S_JointPos.CENTER).shape;
                    break;

                case StbSecSteelBeam_S_Haunch _:
                    var haunch = figures.Length == 2
                             ? new[] { figures[0] as StbSecSteelBeam_S_Haunch, figures[1] as StbSecSteelBeam_S_Haunch }
                             : new[] { figures[0] as StbSecSteelBeam_S_Haunch, figures[1] as StbSecSteelBeam_S_Haunch, figures[2] as StbSecSteelBeam_S_Haunch };
                    memberFigureName = haunch.First(figure => figure.pos == StbSecSteelBeam_S_HaunchPos.CENTER).shape;
                    break;

                case StbSecSteelBeam_S_FiveTypes _:
                    StbSecSteelBeam_S_FiveTypes[] fiveTypes;
                    switch (figures.Length)
                    {
                    case 3:
                        fiveTypes = new[] { figures[0] as StbSecSteelBeam_S_FiveTypes, figures[1] as StbSecSteelBeam_S_FiveTypes, figures[2] as StbSecSteelBeam_S_FiveTypes };
                        break;

                    case 4:
                        fiveTypes = new[] { figures[0] as StbSecSteelBeam_S_FiveTypes, figures[1] as StbSecSteelBeam_S_FiveTypes, figures[2] as StbSecSteelBeam_S_FiveTypes, figures[3] as StbSecSteelBeam_S_FiveTypes };
                        break;

                    case 5:
                        fiveTypes = new[] { figures[0] as StbSecSteelBeam_S_FiveTypes, figures[1] as StbSecSteelBeam_S_FiveTypes, figures[2] as StbSecSteelBeam_S_FiveTypes, figures[3] as StbSecSteelBeam_S_FiveTypes, figures[4] as StbSecSteelBeam_S_FiveTypes };
                        break;

                    default:
                        throw new ArgumentException("StbSecSteelBeam_S_FiveTypes parse error");
                    }
                    memberFigureName = fiveTypes.First(figure => figure.pos == StbSecSteelBeam_S_FiveTypesPos.CENTER).shape;
                    break;
                }
                if (memberFigureName == steelShapeName)
                {
                    k3dCroSec.AddElemId("Id" + beam.id);
                }
            }
        }
Esempio n. 5
0
 private static void SetK3dCroSecElemId(StbSections sections, CroSec k3dCroSec, string steelShapeName)
 {
     CheckSecColumnIdMatching(sections.StbSecColumn_S, k3dCroSec, steelShapeName);
     CheckSecBeamIdMatching(sections.StbSecBeam_S, k3dCroSec, steelShapeName);
     CheckSecBraceIdMatching(sections.StbSecBrace_S, k3dCroSec, steelShapeName);
 }