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); } } }
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); } } }