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;
        }
Example #2
0
        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);
        }