public ISteelCompressionMember GetCompressionMember(ISection Shape, double L_ex, double L_ey, double L_ez, double F_y, double E, bool IsRolledShape = true) { string DEFAULT_EXCEPTION_STRING = "Selected shape is not supported. Select a different shape."; ISteelCompressionMember col = null; CalcLog log = new CalcLog(); SteelMaterial Material = new SteelMaterial(F_y, E); if (Shape == null) { return(new ColumnGeneral(null, L_ex, L_ey, L_ez)); } if (Shape is ISectionI) { ISectionI IShape = Shape as ISectionI; SteelSectionI SectionI = new SteelSectionI(IShape, Material); IShapeFactory IShapeFactory = new IShapeFactory(); return(IShapeFactory.GetIshape(SectionI, IsRolledShape, L_ex, L_ey, L_ez)); } else if (Shape is ISectionChannel) { ISectionChannel ChannelShape = Shape as ISectionChannel; SteelChannelSection ChannelSection = new SteelChannelSection(ChannelShape, Material); throw new Exception(DEFAULT_EXCEPTION_STRING); } else if (Shape is ISectionPipe) { ISectionPipe SectionPipe = Shape as ISectionPipe; SteelPipeSection PipeSection = new SteelPipeSection(SectionPipe, Material); ChsShapeFactory ChsFactory = new ChsShapeFactory(); return(ChsFactory.GetChsShape(PipeSection, L_ex, L_ey, L_ez, log)); } else if (Shape is ISectionTube) { ISectionTube TubeShape = Shape as ISectionTube; SteelRhsSection RectHSS_Section = new SteelRhsSection(TubeShape, Material); RhsShapeFactory RhsFactory = new RhsShapeFactory(); return(RhsFactory.GetRhsShape(RectHSS_Section, L_ex, L_ey, L_ez)); } else if (Shape is ISectionBox) { ISectionBox BoxShape = Shape as ISectionBox; SteelBoxSection BoxSection = new SteelBoxSection(BoxShape, Material); RhsShapeFactory RhsFactory = new RhsShapeFactory(); return(RhsFactory.GetRhsShape(BoxSection, L_ex, L_ey, L_ez)); } else if (Shape is ISectionRectangular || Shape is ISectionRound) { ISteelSection solidSec; if (Shape is ISectionRectangular) { ISectionRectangular RectangleShape = Shape as ISectionRectangular; solidSec = new SteelRectangleSection(RectangleShape, Material); } else { ISectionRound rnd = Shape as ISectionRound; solidSec = new SteelRoundSection(rnd, Material); } CompressionMemberRectangle SolidShapeSection = new CompressionMemberRectangle(solidSec, L_ex, L_ey, L_ez); return(SolidShapeSection); } else if (Shape is ISectionTee) { ISectionTee TeeShape = Shape as ISectionTee; SteelTeeSection TeeSection = new SteelTeeSection(TeeShape, Material); IShapeCompactness compactnessTee = new ShapeCompactness.TeeMember(TeeSection); CompactnessClassAxialCompression flangeCompactness = compactnessTee.GetFlangeCompactnessCompression(); CompactnessClassAxialCompression stemCompactness = compactnessTee.GetWebCompactnessCompression(); if (flangeCompactness == CompactnessClassAxialCompression.NonSlender && stemCompactness == CompactnessClassAxialCompression.NonSlender) { return(new ColumnTee(TeeSection, IsRolledShape, L_ex, L_ey, L_ez)); } else { throw new Exception(DEFAULT_EXCEPTION_STRING); } } else { throw new Exception(DEFAULT_EXCEPTION_STRING); } }
public ISteelBeamFlexure GetBeam(ISection Shape, ISteelMaterial Material, ICalcLog Log, MomentAxis MomentAxis, FlexuralCompressionFiberPosition compressionFiberPosition, bool IsRolledMember = true) { ISteelBeamFlexure beam = null; if (MomentAxis == Common.Entities.MomentAxis.XAxis) { if (Shape is ISectionI) { ISectionI IShape = Shape as ISectionI; SteelSectionI SectionI = new SteelSectionI(IShape, Material); if (IShape.b_fBot == IShape.b_fTop && IShape.t_fBot == IShape.t_fTop) // doubly symmetric { DoublySymmetricIBeam dsBeam = new DoublySymmetricIBeam(SectionI, Log, compressionFiberPosition, IsRolledMember); beam = dsBeam.GetBeamCase(); } else { SinglySymmetricIBeam ssBeam = new SinglySymmetricIBeam(SectionI, IsRolledMember, compressionFiberPosition, Log); beam = ssBeam.GetBeamCase(); } } else if (Shape is ISolidShape) { ISolidShape solidShape = Shape as ISolidShape; SteelSolidSection SectionSolid = new SteelSolidSection(solidShape, Material); beam = new BeamSolid(SectionSolid, Log, MomentAxis); } else if (Shape is ISectionChannel) { ISectionChannel ChannelShape = Shape as ISectionChannel; SteelChannelSection ChannelSection = new SteelChannelSection(ChannelShape, Material); beam = new BeamChannel(ChannelSection, IsRolledMember, Log); IShapeCompactness compactness = new ShapeCompactness.ChannelMember(ChannelSection, IsRolledMember, compressionFiberPosition); CompactnessClassFlexure flangeCompactness = compactness.GetFlangeCompactnessFlexure(); CompactnessClassFlexure webCompactness = compactness.GetWebCompactnessFlexure(); if (flangeCompactness != CompactnessClassFlexure.Compact || webCompactness != CompactnessClassFlexure.Compact) { throw new Exception("Channels with non-compact and slender flanges or webs are not supported. Revise input."); } } else if (Shape is ISectionPipe) { ISectionPipe SectionPipe = Shape as ISectionPipe; SteelPipeSection PipeSection = new SteelPipeSection(SectionPipe, Material); beam = new BeamCircularHss(PipeSection, Log); } else if (Shape is ISectionTube) { ISectionTube TubeShape = Shape as ISectionTube; SteelRhsSection RectHSS_Section = new SteelRhsSection(TubeShape, Material); beam = new BeamRectangularHss(RectHSS_Section, compressionFiberPosition, MomentAxis, Log); } else if (Shape is ISectionBox) { ISectionBox BoxShape = Shape as ISectionBox; SteelBoxSection BoxSection = new SteelBoxSection(BoxShape, Material); beam = new BeamRectangularHss(BoxSection, compressionFiberPosition, MomentAxis, Log); } else if (Shape is ISectionTee) { ISectionTee TeeShape = Shape as ISectionTee; SteelTeeSection TeeSection = new SteelTeeSection(TeeShape, Material); beam = new BeamTee(TeeSection, Log); } else if (Shape is ISectionAngle) { ISectionAngle Angle = Shape as ISectionAngle; SteelAngleSection AngleSection = new SteelAngleSection(Angle, Material); beam = new BeamAngle(AngleSection, Log, Angle.AngleRotation, MomentAxis, Angle.AngleOrientation); } else if (Shape is ISolidShape) { ISolidShape SolidShape = Shape as ISolidShape; SteelSolidSection SolidSection = new SteelSolidSection(SolidShape, Material); beam = new BeamSolid(SolidSection, Log, MomentAxis); } else { throw new Exception("Specified section type is not supported for this node."); } } else // weak axis { if (Shape is ISectionI) { ISectionI IShape = Shape as ISectionI; SteelSectionI SectionI = new SteelSectionI(IShape, Material); beam = new BeamIWeakAxis(SectionI, IsRolledMember, Log); } else { throw new NotImplementedException(); } } return(beam); }
public ISteelCompressionMember GetCompressionMember(ISection Shape, double L_ex, double L_ey, double L_ez, double F_y, double E, bool IsRolledShape = true) { string DEFAULT_EXCEPTION_STRING = "Selected shape is not supported. Select a different shape."; ISteelCompressionMember col = null; CalcLog log = new CalcLog(); SteelMaterial Material = new SteelMaterial(F_y, E); if (Shape is ISectionI) { ISectionI IShape = Shape as ISectionI; SteelSectionI SectionI = new SteelSectionI(IShape, Material); IShapeFactory IShapeFactory = new IShapeFactory(); return(IShapeFactory.GetIshape(SectionI, IsRolledShape, L_ex, L_ey, L_ez, log)); } else if (Shape is ISectionChannel) { ISectionChannel ChannelShape = Shape as ISectionChannel; SteelChannelSection ChannelSection = new SteelChannelSection(ChannelShape, Material); throw new Exception(DEFAULT_EXCEPTION_STRING); } else if (Shape is ISectionPipe) { ISectionPipe SectionPipe = Shape as ISectionPipe; SteelPipeSection PipeSection = new SteelPipeSection(SectionPipe, Material); ChsShapeFactory ChsFactory = new ChsShapeFactory(); return(ChsFactory.GetChsShape(PipeSection, L_ex, L_ey, L_ez, log)); } else if (Shape is ISectionTube) { ISectionTube TubeShape = Shape as ISectionTube; SteelRhsSection RectHSS_Section = new SteelRhsSection(TubeShape, Material); RhsShapeFactory RhsFactory = new RhsShapeFactory(); return(RhsFactory.GetRhsShape(RectHSS_Section, L_ex, L_ey, L_ez, log)); } else if (Shape is ISectionBox) { ISectionBox BoxShape = Shape as ISectionBox; SteelBoxSection BoxSection = new SteelBoxSection(BoxShape, Material); RhsShapeFactory RhsFactory = new RhsShapeFactory(); return(RhsFactory.GetRhsShape(BoxSection, L_ex, L_ey, L_ez, log)); } else if (Shape is ISectionTee) { ISectionTee TeeShape = Shape as ISectionTee; SteelTeeSection TeeSection = new SteelTeeSection(TeeShape, Material); throw new Exception(DEFAULT_EXCEPTION_STRING); } else { throw new Exception(DEFAULT_EXCEPTION_STRING); } }