Example #1
0
        private HndzFrameMonoSlope3D(string name, string description, double length,
                                     double baySpacing, double width, double eaveHeight, double purlinSpacing,
                                     HndzLocationEnum location, HndzRoofSlopeEnum roofSlope, HndzRoofAccessibilityEnum roofAccessibiity,
                                     HndzBuildingEnclosingEnum buildingEnclosing, HndzImportanceFactorEnum importanceFactor,
                                     SectionI columnsStartSection = null, SectionI columnsEndSection    = null, SectionI beamsStartSection = null,
                                     SectionI beamsEndSection     = null, SectionChannel purlinsSection = null, HndzStorey storey          = null) :
            base(name, description, location, roofSlope, roofAccessibiity, buildingEnclosing, importanceFactor, length,
                 baySpacing, purlinSpacing, width, eaveHeight, storey)
        {
            switch (RoofSlope)
            {
            case HndzRoofSlopeEnum.From1To5:
                RidgeHeight = EaveHeight + 0.2 * Width;
                break;

            case HndzRoofSlopeEnum.From1To10:
                RidgeHeight = EaveHeight + 0.1 * Width;
                break;

            case HndzRoofSlopeEnum.From1To20:
                RidgeHeight = EaveHeight + 0.05 * Width;
                break;
            }
            AssemblePEB(columnsStartSection, columnsEndSection, beamsStartSection, beamsEndSection, purlinsSection);
            //throw new NotImplementedException("sorry,this will be fixed in the next version");
        }
Example #2
0
 private static void IncreaseFlang(SectionI Section)
 {
     Section.b_fBot = 1.05 * Section.b_fBot;
     Section.b_fTop = 1.05 * Section.b_fTop;
     Section.t_fBot = 1.05 * Section.t_fBot;
     Section.t_fTop = 1.05 * Section.t_fTop;
 }
        public static SectionI SectionCompare(SectionI A, SectionI B)
        {
            double WebHeightA         = A.d;
            double WebThicknessA      = A.t_w;
            double FlangTopWidthA     = A.b_fTop;
            double FlangBotWidthA     = A.b_fBot;
            double FlangTopThicknessA = A.t_fTop;
            double FlangBotThicknessA = A.t_fBot;
            //==============================
            double WebHeightB         = B.d;
            double WebThicknessB      = B.t_w;
            double FlangTopWidthB     = B.b_fTop;
            double FlangBotWidthB     = B.b_fBot;
            double FlangTopThicknessB = B.t_fTop;
            double FlangBotThicknessB = B.t_fBot;
            //========================
            double SectionAIx = ((WebHeightA * WebHeightA * WebHeightA * WebThicknessA) / 12) + (2 * FlangTopWidthA * FlangTopThicknessA * (((WebHeightA / 2) + (FlangTopThicknessA / 2)) * ((WebHeightA / 2) + (FlangTopThicknessA / 2))));
            double SectionBIx = ((WebHeightB * WebHeightB * WebHeightB * WebThicknessB) / 12) + (2 * FlangTopWidthB * FlangTopThicknessB * (((WebHeightB / 2) + (FlangTopThicknessB / 2)) * ((WebHeightB / 2) + (FlangTopThicknessB / 2))));

            if (SectionAIx > SectionBIx)
            {
                return(A);
            }
            else
            {
                return(B);
            }
        }
Example #4
0
        private static void IncreaseWeb(SectionI Section)
        {
            double tw = 1.05;
            double d  = 1.05;

            Section.t_w = tw;
            Section.d   = d;
        }
Example #5
0
        public void SectionIRolledReturnsJ()
        {
            SectionI shape           = new SectionI("", 12.2, 6.49, 0.38, 0.23);
            double   J               = shape.J;
            double   refValue        = 0.3;
            double   actualTolerance = EvaluateActualTolerance(J, refValue);

            Assert.LessOrEqual(actualTolerance, tolerance);
        }
Example #6
0
        public void SectionIRolledReturnsC_w()
        {
            SectionI shape           = new SectionI("", 12.2, 6.49, 0.38, 0.23);
            double   C_w             = shape.C_w;
            double   refValue        = 607.0;
            double   actualTolerance = EvaluateActualTolerance(C_w, refValue);

            Assert.LessOrEqual(actualTolerance, tolerance);
        }
Example #7
0
        public void SectionIRolledReturnsIy()
        {
            SectionI shape           = new SectionI("", 17.7, 6.0, 0.425, 0.3);
            double   Iy              = shape.I_y;
            double   refValue        = 15.3;
            double   actualTolerance = EvaluateActualTolerance(Iy, refValue);

            Assert.LessOrEqual(actualTolerance, tolerance);
        }
 public HndzFrameSingleBay3D(double length, double baySpacing, double width, double eaveHeight, double purlinSpacing,
                             HndzLocationEnum location, HndzRoofSlopeEnum roofSlope, HndzRoofAccessibilityEnum roofAccessibiity,
                             HndzBuildingEnclosingEnum buildingEnclosing, HndzImportanceFactorEnum importanceFactor,
                             SectionI columnsStartSection = null, SectionI columnsEndSection    = null, SectionI beamsStartSection = null,
                             SectionI beamsEndSection     = null, SectionChannel purlinsSection = null, HndzStorey storey          = null) :
     this(HndzResources.DefaultName, HndzResources.DefaultDescription, length, baySpacing, width, eaveHeight,
          purlinSpacing, location, roofSlope, roofAccessibiity, buildingEnclosing, importanceFactor,
          columnsStartSection, columnsEndSection, beamsStartSection, beamsEndSection, purlinsSection, storey)
 {
 }
        public static SectionI SectionTaperedBeam(SectionI AssumedSection)
        {
            double WebHeight         = AssumedSection.d / 1.5;
            double WebThickness      = AssumedSection.t_w;
            double FlangTopWidth     = AssumedSection.b_fTop;
            double FlangBotWidth     = AssumedSection.b_fBot;
            double FlangTopThickness = AssumedSection.t_fTop;
            double FlangBotThickness = AssumedSection.t_fBot;

            return(new SectionI("TaperedEndBeam", WebHeight, FlangTopWidth, FlangBotWidth, FlangTopThickness, FlangBotThickness, WebThickness));
        }
 public HndzFrameSingleBay3D(string name, string description, double length,
                             double baySpacing, double width, double eaveHeight, double purlinSpacing,
                             HndzLocationEnum location, HndzRoofSlopeEnum roofSlope, HndzRoofAccessibilityEnum roofAccessibiity,
                             HndzBuildingEnclosingEnum buildingEnclosing, HndzImportanceFactorEnum importanceFactor,
                             SectionI columnsStartSection = null, SectionI columnsEndSection    = null, SectionI beamsStartSection = null,
                             SectionI beamsEndSection     = null, SectionChannel purlinsSection = null, HndzStorey storey          = null) :
     base(name, description, location, roofSlope, roofAccessibiity, buildingEnclosing, importanceFactor, length,
          baySpacing, purlinSpacing, width, eaveHeight, storey)
 {
     AssemblePEB(columnsStartSection, columnsEndSection, beamsStartSection, beamsEndSection, purlinsSection);
 }
        public static SectionI PostProcessing(SectionI FinalSection)
        {
            string Name              = FinalSection.Name;
            double WebHeight         = (int)(FinalSection.d * 10) + 1;
            double WebThickness      = (int)(FinalSection.t_w * 10) + 1;
            double FlangTopWidth     = (int)(FinalSection.b_fTop * 10) + 1;
            double FlangBotWidth     = (int)(FinalSection.b_fBot * 10) + 1;
            double FlangTopThickness = (int)(FinalSection.t_fTop * 10) + 1;
            double FlangBotThickness = (int)(FinalSection.t_fBot * 10) + 1;

            return(new SectionI(Name, WebHeight, FlangTopWidth, FlangTopThickness, WebThickness));
            //  return new SectionI(Name, WebHeight, FlangTopWidth, FlangBotWidth, FlangTopThickness, FlangBotThickness, WebThickness);
        }
Example #12
0
        private void CreateColumn(double L_ex, double L_ey, double L_ez = 0)
        {
            double        d   = 17.0;
            double        b_f = 8.0;
            double        t_f = 1.0;
            double        t_w = 0.25;
            ISection      r   = new SectionI("", d, b_f, t_f, t_w);
            SteelMaterial mat = new SteelMaterial(50.0, 29000);

            L_ez = L_ez == 0? L_ex : L_ez;
            CompressionMemberFactory factory = new CompressionMemberFactory();

            column = factory.GetCompressionMember(r, mat, L_ex, L_ey, L_ez);
        }
Example #13
0
        /// <summary>
        /// Base class for all web openings
        /// </summary>
        /// <param name="Section">Steel Section</param>
        /// <param name="a_o">Length of opening</param>
        /// <param name="h_o">Depth of opening</param>
        /// <param name="e">Eccentricity of opening (positive up)</param>
        /// <param name="F_y">Steel shape yield stress</param>
        /// <param name="t_r"> Plate thickness of opening reinforcement (top or bottom)</param>
        /// <param name="b_r"> Plate width (horizontal dimension in cross-section) for reinforcement</param>
        public WebOpeningBase(ISectionI Section, double a_o, double h_o, double e, double F_y, double t_r, double b_r,
                              bool IsSingleSideReinforcement, double PlateOffset)
        {
            this.a_o = a_o;
            this.h_o = h_o;
            this.e   = e;
            this.F_y = F_y;
            this.t_r = t_r;
            this.b_r = b_r;
            SectionI sec = new SectionI(null, Section.d, Section.b_fTop, Section.t_fTop, Section.t_w);

            this.Section = sec;

            this.PlateOffset = PlateOffset;
            this.IsSingleSideReinforcement = IsSingleSideReinforcement;
        }
Example #14
0
        public static void initDesigner(SteelGrade Grade, LoadingType LoadingType, double _LUnsupported, double _LbInPlan, double _LbOutPlan,
                                        SectionI _ColumnSection, /*, HndzISectionProfile _BeamSection, HndzColumnStandardCase _columnTapered,
                                                                  * HndzBeamStandrdCase _beamTapered*/HndzAnalysisResults _AppliedLoadsStart, HndzAnalysisResults _AppliedLoadsEnd)
        {
            switch (LoadingType)
            {
            case LoadingType.Case1:
                CaseStress = 1.0;
                break;

            case LoadingType.Case2:
                CaseStress = 1.2;
                break;
            }
            // LbInPlan = _LbInPlan;
            //LbOutPlan = _LbOutPlan;
            // LUnsupported = _LUnsupported;
            BuiltUpSection    = _ColumnSection;
            AppliedLoadsStart = _AppliedLoadsStart;
            AppliedLoadsEnd   = _AppliedLoadsEnd;
            //BuiltUpSectionRafter = _BeamSection;
            //columnTapered = _columnTapered;
            //beamTapered = _beamTapered;
            switch (Grade)
            {
            case SteelGrade.st37:
                Fy   = 2.4;
                Fu   = 3.6;
                FcP1 = 1.4;
                FcP2 = 0.000065;
                break;

            case SteelGrade.st44:
                Fy   = 2.8;
                Fu   = 4.4;
                FcP1 = 1.6;
                FcP2 = 0.000085;
                break;

            case SteelGrade.st52:
                Fy   = 3.6;
                Fu   = 5.2;
                FcP1 = 2.1;
                FcP2 = 0.000135;
                break;
            }
        }
        public void SectionDoubleStackedReturnsMomentOfInertia()
        {
            //W18X50 + C15X33.9
            //Table 1-19
            SectionI             IShape  = new SectionI(null, 18.2d, 7.56d, 0.695d, 0.415d);
            SectionChannel       Channel = new SectionChannel(null, 15.0d, 3.4d, 0.65d, 0.4d, true, true);
            SectionDoubleStacked shape   = new SectionDoubleStacked(Channel, IShape, 0.4);
            double I_x       = shape.I_x;
            double refValue1 = 1456.0; //from Autocad. Does not agree with Manual which is 1250

            double I_y       = shape.I_y;
            double refValue2 = 363.6; //from Autocad. Does not agree with Manual which is 1250

            double actualTolerance1 = EvaluateActualTolerance(I_x, refValue1);
            double actualTolerance2 = EvaluateActualTolerance(I_y, refValue2);

            Assert.LessOrEqual(actualTolerance1, tolerance);
            Assert.LessOrEqual(actualTolerance2, tolerance);
        }
        public void DoublySymmetricIReturnsLateralTorsionalStrength()
        {
            FlexuralMemberFactory factory          = new FlexuralMemberFactory();
            AiscShapeFactory      AiscShapeFactory = new AiscShapeFactory();
            ISection r = new  SectionI("", 12.2, 6.49, 0.38, 0.23);


            SteelMaterial     mat    = new SteelMaterial(50.0, 29000);
            ISteelBeamFlexure beam12 = factory.GetBeam(r, mat, null, MomentAxis.XAxis, FlexuralCompressionFiberPosition.Top);

            SteelLimitStateValue LTB =
                beam12.GetFlexuralLateralTorsionalBucklingStrength(1.0, 19 * 12, FlexuralCompressionFiberPosition.Top, Steel.AISC.FlexuralAndTorsionalBracingType.NoLateralBracing);
            double phiM_n          = LTB.Value;
            double refValue        = 60 * 12; // from AISC Steel Manual Table 3-10
            double actualTolerance = EvaluateActualTolerance(phiM_n, refValue);


            Assert.LessOrEqual(actualTolerance, tolerance);
        }
        public IBeamCope GetCope(BeamCopeCase BeamCopeCase, double d, double b_f, double t_f, double t_w, double d_c, double c, double F_y, double F_u)
        {
            ISteelMaterial material = new SteelMaterial(F_y, F_u, SteelConstants.ModulusOfElasticity, SteelConstants.ShearModulus);
            ISectionI      section  = new SectionI(null, d, b_f, t_f, t_w);
            IBeamCope      cope     = null;

            switch (BeamCopeCase)
            {
            case BeamCopeCase.Uncoped:
                cope = new BeamUncoped(section, material);
                break;

            case BeamCopeCase.CopedTopFlange:
                cope = new BeamCopeSingle(c, d_c, section, material);
                break;

            case BeamCopeCase.CopedBothFlanges:
                cope = new BeamCopeDouble(c, d_c, section, material);
                break;
            }
            return(cope);
        }
Example #18
0
        public void ConvertToHndzElement(HndzStructuralElement hndzElement)
        {
            SAPITaperedSection sapSec = (SAPITaperedSection)Section;

            //HndzStructuralElement hndzElement;
            SectionI startSec = new SectionI(sapSec.StartSection.Name, sapSec.StartSection.Height * 1000, sapSec.StartSection.BotFlangeWidth * 1000, sapSec.StartSection.BotFlangeThickness * 1000, sapSec.StartSection.WebThickness * 1000);
            SectionI endSec   = new SectionI(sapSec.EndSection.Name, sapSec.EndSection.Height * 1000, sapSec.EndSection.BotFlangeWidth * 1000, sapSec.EndSection.BotFlangeThickness * 1000, sapSec.EndSection.WebThickness * 1000);

            if (hndzElement.Profile is HndzITaperedProfile)
            {
                HndzITaperedProfile profile = hndzElement.Profile as HndzITaperedProfile;
                hndzElement.Name               = Name;
                hndzElement.Profile.Name       = Name;
                profile.StartProfile.I_Section = startSec;
                profile.StartProfile.Name      = sapSec.StartSection.Name;
                profile.EndProfile.I_Section   = endSec;
                profile.EndProfile.Name        = sapSec.EndSection.Name;
            }

            hndzElement.AnalysisResults         = new HndzAnalysisResults[AnalysisResults.NumberResults];
            hndzElement.AnalysisResultsEnvelope = new HndzAnalysisResults[AnalysisResultsEnvelope.NumberResults];

            for (int i = 0; i < AnalysisResults.NumberResults; i++)
            {
                hndzElement.AnalysisResults[i] = new HndzAnalysisResults(AnalysisResults.Station[i],
                                                                         AnalysisResults.LoadCase[i], AnalysisResults.Axial[i], AnalysisResults.Shear2[i], AnalysisResults.Shear3[i], AnalysisResults.TortionalMoment[i]
                                                                         , AnalysisResults.Moment2[i], AnalysisResults.Moment3[i]);
            }
            for (int i = 0; i < AnalysisResultsEnvelope.NumberResults; i++)
            {
                hndzElement.AnalysisResultsEnvelope[i] = new HndzAnalysisResults(AnalysisResultsEnvelope.Station[i],
                                                                                 AnalysisResultsEnvelope.LoadCase[i], AnalysisResultsEnvelope.Axial[i], AnalysisResultsEnvelope.Shear2[i], AnalysisResultsEnvelope.Shear3[i], AnalysisResultsEnvelope.TortionalMoment[i]
                                                                                 , AnalysisResultsEnvelope.Moment2[i], AnalysisResultsEnvelope.Moment3[i]);
            }
            hndzElement.IsDesignPassed = IsDesignPassed;
            //TODO: Section and material
            //return hndzElement;
        }
        public override void AssemblePEB(SectionI columnsStartSection = null, SectionI columnsEndSection = null, SectionI beamsStartSection = null, SectionI beamsEndSection = null, SectionChannel purlinsSection = null)
        {
            const double FirstPurlinSpacingCL = 100;
            //const double FirstPurlinSpacingEdge = 0;

            //SectionI AssumedIBuiltUpSection = new SectionI("Assumed Built up I Section", 600, 250, 20, 10);
            SectionChannel      AssumedCSection = new SectionChannel("Assumed hotRolled C Section", 180, 80, 10, 4);
            HndzISectionProfile bigProfile      = new HndzISectionProfile(new SectionI("big", 1000 * 2, 500 * 2, 100 * 2, 50 * 2));
            HndzISectionProfile smallProfile    = new HndzISectionProfile(new SectionI("small", 1000, 500, 100, 50));


            HndzITaperedProfile assumedProfileColumn = new HndzITaperedProfile(smallProfile, bigProfile, new Vector2d(1, 0));
            HndzITaperedProfile assumedProfileBeam   = new HndzITaperedProfile(bigProfile, smallProfile, new Vector2d(0, 1));

            HndzITaperedProfile columnsTaperedProfile = null;
            HndzITaperedProfile beamsTaperedProfile   = null;

            #region Check function parameters

            if (columnsStartSection == null && columnsEndSection != null)
            {
                columnsTaperedProfile = new HndzITaperedProfile(new HndzISectionProfile(columnsEndSection),
                                                                new HndzISectionProfile(columnsEndSection), new Vector2d(0, 1));
            }
            else if (columnsEndSection == null && columnsStartSection != null)
            {
                columnsTaperedProfile = new HndzITaperedProfile(new HndzISectionProfile(columnsStartSection),
                                                                new HndzISectionProfile(columnsStartSection), new Vector2d(0, 1));
            }
            else if (columnsStartSection != null && columnsEndSection != null)
            {
                columnsTaperedProfile = new HndzITaperedProfile(new HndzISectionProfile(columnsStartSection),
                                                                new HndzISectionProfile(columnsEndSection), new Vector2d(0, 1));
            }
            else // dah law el el 2 sections b null
            {
                columnsTaperedProfile = assumedProfileColumn;
            }



            if (beamsStartSection == null && beamsEndSection != null)
            {
                beamsTaperedProfile = new HndzITaperedProfile(new HndzISectionProfile(beamsEndSection),
                                                              new HndzISectionProfile(beamsEndSection), new Vector2d(1, 0));
            }
            else if (beamsEndSection == null && beamsStartSection != null)
            {
                beamsTaperedProfile = new HndzITaperedProfile(new HndzISectionProfile(beamsStartSection),
                                                              new HndzISectionProfile(beamsStartSection), new Vector2d(1, 0));
            }
            else if (beamsStartSection != null && beamsEndSection != null)
            {
                beamsTaperedProfile = new HndzITaperedProfile(new HndzISectionProfile(beamsStartSection),
                                                              new HndzISectionProfile(beamsEndSection), new Vector2d(1, 0));
            }
            else // dah law el el 2 sections b null
            {
                beamsTaperedProfile = assumedProfileBeam;
            }



            if (purlinsSection == null)
            {
                purlinsSection = AssumedCSection;
            }
            #endregion

            columnsStartSection = columnsTaperedProfile.StartProfile.I_Section;
            columnsEndSection   = columnsTaperedProfile.EndProfile.I_Section;

            beamsStartSection = beamsTaperedProfile.StartProfile.I_Section;
            beamsEndSection   = beamsTaperedProfile.EndProfile.I_Section;
            double beamZoffset = beamsStartSection.d / 2 + beamsStartSection.tf;//ToDo: add to beam and purlin
            Frames2D = new List <HndzFrameSingleBay2D>(FramesCount);
            Purlins  = new List <HndzPurlinStandrdCase>();
            //Girts = new List<HndzGuirt>(2);

            for (int framesCounter = 0; framesCounter < FramesCount; framesCounter++)
            {
                HndzFrameSingleBay2D Frame = new HndzFrameSingleBay2D();

                Point3d lowerLeft  = new Point3d(-Width / 2, BaySpacing * framesCounter, 0);
                Point3d lowerRight = new Point3d(Width / 2, BaySpacing * framesCounter, 0);

                Point3d upperLeft  = new Point3d(-Width / 2, BaySpacing * framesCounter, EaveHeight);
                Point3d upperRight = new Point3d(Width / 2, BaySpacing * framesCounter, EaveHeight);

                Point3d ridgeMid = new Point3d(0, BaySpacing * framesCounter, RidgeHeight);

                ////
                HndzLine rColLine = new HndzLine(lowerRight, upperRight);
                Frame.RightColumn = new HndzColumnStandardCase(rColLine, columnsTaperedProfile);

                HndzLine lColLine = new HndzLine(lowerLeft, upperLeft);
                Frame.LeftColumn = new HndzColumnStandardCase(lColLine, columnsTaperedProfile);

                /////
                HndzLine rBeamLine = new HndzLine(upperRight, ridgeMid);
                Frame.RightBeam = new HndzBeamStandrdCase(rBeamLine, beamsTaperedProfile);

                HndzLine lBeamLine = new HndzLine(upperLeft, ridgeMid);
                Frame.LeftBeam = new HndzBeamStandrdCase(lBeamLine, beamsTaperedProfile);

                Frame.RightSupport = new HndzSupport(HndzSupportTypeEnum.Pinned, new HndzNode(lowerRight));
                Frame.LeftSupport  = new HndzSupport(HndzSupportTypeEnum.Pinned, new HndzNode(lowerLeft));

                Frames2D.Add(Frame);
            }
            double roofSlopeAngle = 1;
            switch (RoofSlope)
            {
            case HndzRoofSlopeEnum.From1To5:
                roofSlopeAngle = Math.Atan(0.2);
                break;

            case HndzRoofSlopeEnum.From1To10:
                roofSlopeAngle = Math.Atan(0.1);
                break;

            case HndzRoofSlopeEnum.From1To20:
                roofSlopeAngle = Math.Atan(0.05);
                break;
            }

            //double pulinZoffset = beamsStartSection.d / 2 - beamsStartSection.tf / 2; ///////Need Revision "msh 3arf ezay bs hya kda sha8ala 7lw :D"
            double pulinZoffset = /*beamsEndSection.d / 2 */ +purlinsSection.d / 2; ///////Need Revision "msh 3arf ezay bs hya kda sha8ala 7lw :D"
            //double taperingDiffrence = 0.5*(beamsStartSection.d - beamsEndSection.d);
            double xLeft = 0 - FirstPurlinSpacingCL;
            double zLeft = RidgeHeight + pulinZoffset;
            pulinZoffset = 0;

            double taperingZoffsetLeft = PurlinSpacing * ((beamsStartSection.d - beamsEndSection.d) / 2) / (Frames2D.ElementAt(0).LeftBeam.ExtrusionLine.RhinoLine.Length);
            taperingZoffsetLeft = 0;
            do
            {
                Point3d startL = new Point3d(xLeft, 0, zLeft);
                Point3d endL   = new Point3d(xLeft, Length, zLeft);

                HndzCSectionProfile assumedProfilePurlin = new HndzCSectionProfile(purlinsSection, new Vector2d(0, -1));

                HndzLine purlinLine = new HndzLine(new Line(startL, endL));
                Purlins.Add(new HndzPurlinStandrdCase(assumedProfilePurlin, purlinLine));

                xLeft -= PurlinSpacing;
                zLeft -= PurlinSpacing * Math.Tan(roofSlopeAngle) - taperingZoffsetLeft;
            } while (xLeft > -Width / 2 + FirstPurlinSpacingCL && zLeft > EaveHeight + pulinZoffset);

            double xRight = 0 + FirstPurlinSpacingCL;
            double zRight = RidgeHeight + pulinZoffset;

            do
            {
                Point3d startR = new Point3d(xRight, 0, zRight);
                Point3d endR   = new Point3d(xRight, Length, zRight);

                HndzCSectionProfile assumedProfilePurlin = new HndzCSectionProfile(purlinsSection, new Vector2d(0, 1));

                HndzLine purlinLine = new HndzLine(new Line(startR, endR));
                Purlins.Add(new HndzPurlinStandrdCase(assumedProfilePurlin, purlinLine));

                xRight += PurlinSpacing;
                zRight -= PurlinSpacing * Math.Tan(roofSlopeAngle) - taperingZoffsetLeft;
            } while (xRight < Width / 2 && zRight > EaveHeight + pulinZoffset);
        }
Example #20
0
        //step 1
        //if not compact -> redo
        public static void DesignFixed(double rafterLength, double purlinSpacing, double bracingSpacing, SectionI Section, HndzAnalysisResults AppliedLoadsStart, HndzAnalysisResults AppliedLoadsEnd)
        {
            initDesigner(SteelGrade.st37, LoadingType.Case2, purlinSpacing, rafterLength, bracingSpacing, Section, AppliedLoadsStart, AppliedLoadsEnd);
            bool WebCompactDesign = CheckIfwebCompactFixed();

            while (!WebCompactDesign)
            {
                IncreaseWeb(Section);
            }
        }
Example #21
0
 public abstract void AssemblePEB(SectionI columnsStartSection = null, SectionI columnsEndSection = null, SectionI beamsStartSection = null, SectionI beamsEndSection = null, SectionChannel purlinsSection = null);
        public static SectionI CalculateBeamSection(SteelGrade Grade, double BeamLength, double AxialForce, double MxEnd)
        {
            double Fy = 0;

            switch (Grade)
            {
            case SteelGrade.st37:
                Fy = 2.4;
                break;

            case SteelGrade.st44:
                Fy = 2.8;
                break;

            case SteelGrade.st52:
                Fy = 3.6;
                break;

            default:
                break;
            }
            dw1 = (BeamLength * 100) / 20;
            dw2 = (BeamLength * 100) / 40;
            double Dw = ((dw1 + dw2) / 2);

            tw1 = Dw / (190 / Math.Sqrt(Fy));
            double Tw = Math.Max(tw1, 5) + 2;

            Tw = Tw / 10;
            double C             = (Math.Abs(AxialForce) / 2) + (Math.Abs(MxEnd) * 100 / Dw);
            double AssumedFc     = 1.3;
            double FlangArea     = C / AssumedFc;
            double AssumedTflang = Math.Round(Math.Sqrt(FlangArea / 20), 1);
            double AssumedBflang = 20 * AssumedTflang;

            AssumedBflang = (int)AssumedBflang;

            double CondA = Dw / Tw;                       // <=180
            double CondB = AssumedTflang / Tw;            // <=2
            double CondC = Dw / AssumedBflang;            // <= 4.5
            double CondD = AssumedBflang / AssumedTflang; // <= 20

            if (CondA > 180 || CondB > 2 || CondC > 4.5 || CondD > 20)
            {
                if (CondA > 180)
                {
                    Dw = 180 * Tw;
                }
                if (CondB > 2)
                {
                    AssumedTflang = 2 * Tw;
                    AssumedTflang = 2 * Tw;
                }
                if (CondC > 4.5)
                {
                    Dw = AssumedBflang * 4.5;
                }
                if (CondD > 20)
                {
                    AssumedBflang = 20 * AssumedTflang;
                    AssumedBflang = 20 * AssumedTflang;
                }
            }

            return(AssumedSection = new SectionI("AssumedBeamSection", Dw, AssumedBflang, AssumedBflang, AssumedTflang, AssumedTflang, Tw));
        }
Example #23
0
 public override void AssemblePEB(SectionI columnsStartSection = null, SectionI columnsEndSection = null, SectionI beamsStartSection = null, SectionI beamsEndSection = null, SectionChannel purlinsSection = null)
 {
     throw new NotImplementedException();
 }
Example #24
0
        public static SectionI DesignEnd(double WebHeight, double WebThickness, double FlangTopWidth, double FlangTopThickness,
                                         double FlangBotWidth, double FlangBotThickness,
                                         double AxialForce, double MxStart, double MxEnd, double Fy,
                                         double LUnsupported, double Kfactor, double LbInPlan, double LbOutPlan, SwayCondtion Sway, SteelGrade Grade, LoadingType Case)
        {
            SectionI Final;
            double   NewWebHeight         = WebHeight;
            double   NewWebThickness      = WebThickness;
            double   NewFlangTopWidth     = FlangTopWidth;
            double   NewFlangBotWidth     = FlangBotWidth;
            double   NewFlangTopThickness = FlangTopThickness;
            double   NewFlangBotThickness = FlangBotThickness;
            //=================
            double Fbcx;
            double Fbcy;
            //===================
            double LmdaIn;
            double LmdaOut;
            double LmdaMax;
            //=====================
            double Stress;
            //====================
            bool SafeForLocalBuckling;
            bool SafeForStress;
            //=============================
            //Section Parameters
            //=====
            double CaseStress;
            //====================
            //====================
            bool webCompact   = CheckIFWebCompactFixed(WebHeight, WebThickness, FlangTopWidth, FlangTopThickness, AxialForce, MxEnd, Fy);
            bool flangCompact = CheckIfFlangisCompactFixed(FlangTopWidth, FlangTopThickness, WebThickness, Fy);

            while (!webCompact || !flangCompact)
            {
                if (!webCompact)
                {
                    IncreaseWebThicknessFixed(WebThickness, out NewWebThickness);
                    WebThickness = NewWebThickness;
                    webCompact   = CheckIFWebCompactFixed(WebHeight, WebThickness, AxialForce, FlangTopWidth, FlangTopThickness, MxEnd, Fy);
                }
                if (!flangCompact)
                {
                    IncreaseFlangThicknessFixed(FlangTopThickness, FlangBotThickness, out NewFlangTopThickness, out NewFlangBotThickness);
                    FlangTopThickness = NewFlangTopThickness;
                    FlangBotThickness = NewFlangBotThickness;
                    flangCompact      = CheckIfFlangisCompactFixed(FlangTopWidth, FlangTopThickness, WebThickness, Fy);
                }
            }
            double Area = ((2 * FlangTopThickness * FlangTopWidth) + (WebThickness * WebHeight));
            double Ix   = ((WebHeight * WebHeight * WebHeight * WebThickness) / 12) + (2 * FlangTopWidth * FlangTopThickness * (((WebHeight / 2) + (FlangTopThickness / 2)) * ((WebHeight / 2) + (FlangTopThickness / 2))));
            double Iy   = ((2 * FlangTopWidth * FlangTopWidth * FlangTopWidth * FlangTopThickness) / 12);
            double Zx   = (Ix / ((WebHeight / 2) + FlangTopThickness));
            double Zy   = (Iy / (FlangTopWidth / 2));
            double Rx   = Math.Sqrt(Ix / Area);
            double Ry   = Math.Sqrt(Iy / Area);

            CheckLateralTortionalBucklingFixed(LUnsupported, MxStart, MxEnd, Fy, WebHeight, WebThickness, FlangTopWidth, FlangTopThickness, true, out Fbcx, out Fbcy);
            SafeForLocalBuckling = CheckColumnBuckling(Kfactor, LbInPlan, LbOutPlan, Rx, Ry, out LmdaIn, out LmdaOut, out LmdaMax);
            SafeForStress        = CheckAllowableStresses(Sway, Grade, Case, MxStart, MxEnd, AxialForce, LmdaIn, LmdaOut, LmdaMax, Area, Zx, Zy, Fbcx, Fbcy, out Stress);

            while (!SafeForLocalBuckling)
            {
                if (!SafeForLocalBuckling)
                {
                    if (LmdaIn > 180)
                    {
                        IncreaseWebHeightFixed(WebHeight, out NewWebHeight);
                        WebHeight = NewWebHeight;
                        Area      = ((2 * FlangTopThickness * FlangTopWidth) + (WebThickness * WebHeight));
                        Ix        = ((WebHeight * WebHeight * WebHeight * WebThickness) / 12) + (2 * FlangTopWidth * FlangTopThickness * (((WebHeight / 2) + (FlangTopThickness / 2)) * ((WebHeight / 2) + (FlangTopThickness / 2))));
                        Iy        = ((2 * FlangTopWidth * FlangTopWidth * FlangTopWidth * FlangTopThickness) / 12);
                        Zx        = (Ix / ((WebHeight / 2) + FlangTopThickness));
                        Zy        = (Iy / (FlangTopWidth / 2));
                        Rx        = Math.Sqrt(Ix / Area);
                        Ry        = Math.Sqrt(Iy / Area);
                    }
                    else if (LmdaOut > 180)
                    {
                        IncreaseFlangWidthFixed(FlangTopWidth, FlangBotWidth, out NewFlangTopWidth, out NewFlangBotWidth);
                        FlangTopWidth = NewFlangTopWidth;
                        FlangBotWidth = NewFlangBotWidth;
                        Area          = ((2 * FlangTopThickness * FlangTopWidth) + (WebThickness * WebHeight));
                        Ix            = ((WebHeight * WebHeight * WebHeight * WebThickness) / 12) + (2 * FlangTopWidth * FlangTopThickness * (((WebHeight / 2) + (FlangTopThickness / 2)) * ((WebHeight / 2) + (FlangTopThickness / 2))));
                        Iy            = ((2 * FlangTopWidth * FlangTopWidth * FlangTopWidth * FlangTopThickness) / 12);
                        Zx            = (Ix / ((WebHeight / 2) + FlangTopThickness));
                        Zy            = (Iy / (FlangTopWidth / 2));
                        Rx            = Math.Sqrt(Ix / Area);
                        Ry            = Math.Sqrt(Iy / Area);
                    }
                    SafeForLocalBuckling = CheckColumnBuckling(Kfactor, LbInPlan, LbOutPlan, Rx, Ry, out LmdaIn, out LmdaOut, out LmdaMax);
                    SafeForStress        = CheckAllowableStresses(Sway, Grade, Case, MxStart, MxEnd, AxialForce, LbInPlan, LmdaOut, LmdaMax, Area, Zx, Zy, Fbcx, Fbcy, out Stress);
                }
            }
            while (!SafeForStress)
            {
                IncreaseFlangWidthFixed(FlangTopWidth, FlangBotWidth, out NewFlangTopWidth, out NewFlangBotWidth);
                FlangTopWidth = NewFlangTopWidth;
                FlangBotWidth = NewFlangBotWidth;

                IncreaseWebHeightFixed(WebHeight, out NewWebHeight);
                WebHeight = NewWebHeight;

                IncreaseWebThicknessFixed(WebThickness, out NewWebThickness);
                WebThickness = NewWebThickness;

                IncreaseFlangThicknessFixed(FlangTopThickness, FlangBotThickness, out NewFlangTopThickness, out NewFlangBotThickness);
                FlangTopThickness = NewFlangTopThickness;
                FlangBotThickness = NewFlangBotThickness;

                Area = ((2 * FlangTopThickness * FlangTopWidth) + (WebThickness * WebHeight));
                Ix   = ((WebHeight * WebHeight * WebHeight * WebThickness) / 12) + (2 * FlangTopWidth * FlangTopThickness * (((WebHeight / 2) + (FlangTopThickness / 2)) * ((WebHeight / 2) + (FlangTopThickness / 2))));
                Iy   = ((2 * FlangTopWidth * FlangTopWidth * FlangTopWidth * FlangTopThickness) / 12);
                Zx   = (Ix / ((WebHeight / 2) + FlangTopThickness));
                Zy   = (Iy / (FlangTopWidth / 2));
                Rx   = Math.Sqrt(Ix / Area);
                Ry   = Math.Sqrt(Iy / Area);
                SafeForLocalBuckling = CheckColumnBuckling(Kfactor, LbInPlan, LbOutPlan, Rx, Ry, out LmdaIn, out LmdaOut, out LmdaMax);
                SafeForStress        = CheckAllowableStresses(Sway, Grade, Case, MxStart, MxEnd, AxialForce, LbInPlan, LmdaOut, LmdaMax, Area, Zx, Zy, Fbcx, Fbcy, out Stress);
            }
            return(Final = new SectionI("BeamColumn", WebHeight, FlangTopWidth, FlangBotWidth, FlangTopThickness, FlangBotThickness, WebThickness));
        }
Example #25
0
 /// <summary>
 /// Constructor takes profile Section and X-Direction
 /// </summary>
 /// <param name="name">name for the profile section i.e IPE 280 HEA 300 ...</param>
 /// <param name="description">description for the profile</param>
 /// <param name="IBuiltUpSection">section represents flange and web dimensions</param>
 /// <param name="centroid">the centroid of the section</param>
 /// <param name="orientation">Reference X-Direction of the profile</param>
 public HndzISectionProfile(SectionI IBuiltUpSection,
                            Vector2d orientation = default(Vector2d)) : this(HndzResources.DefaultName,
                                                                             HndzResources.DefaultDescription, IBuiltUpSection, orientation)
 {
 }
Example #26
0
 /// <summary>
 /// Constructor takes profile name, description, Section and X-Direction
 /// </summary>
 /// <param name="name">name for the profile section i.e IPE 280 HEA 300 ...</param>
 /// <param name="description">description for the profile</param>
 /// <param name="IBuiltUpSection">section represents flange and web dimensions</param>
 /// <param name="centroid">the centroid of the section</param>
 /// <param name="direction">Reference X-Direction of the profile</param>
 public HndzISectionProfile(string name, string description, SectionI IBuiltUpSection,
                            Vector2d direction = default(Vector2d)) : base(name, description, direction)
 {
     I_Section = IBuiltUpSection;
 }
Example #27
0
        public static HndzFrameSingleBay3D AssembleSections(HndzFrameSingleBay3D Frame3d)
        {
            double Fy             = 2.4;
            double LUSupportedSap = 4.11;
            double Kfactor        = 2;
            //==========================
            double KfactorBeamEnd   = 0.7;
            double KfactorBeamStart = 0.65;
            //=======================

            double PurlinSpacing = Frame3d.PurlinSpacing / 1000;

            //
            foreach (HndzFrameSingleBay2D Frame in Frame3d.Frames2D)
            {
                //===========================
                //=======================
                //Has to Get it form an algorithm in sap
                //Kfactor Needs to Be calculated from InterActrion Diagrams - 2 For worst Case
                //What i want
                // Analysis Result at start and and end
                //Whats my Name ? Gecko

                double BeamLength   = Frame.LeftBeam.ExtrusionLine.RhinoLine.Length / 1000;
                double ColumnHeight = Frame.LeftColumn.ExtrusionLine.RhinoLine.Length / 1000;
                //=================
                double Lbin         = ColumnHeight;
                double Lbout        = ColumnHeight;
                double LUnsupported = ColumnHeight * 100 / 2;

                HndzAnalysisResults RColStartMax = Frame.LeftColumn.AnalysisResults[0];
                HndzAnalysisResults RColMidMax   = Frame.LeftColumn.AnalysisResults[1];
                HndzAnalysisResults RColEndMax   = Frame.LeftColumn.AnalysisResults[2];

                HndzAnalysisResults RColStartMin = Frame.LeftColumn.AnalysisResults[3];
                HndzAnalysisResults RColMidMin   = Frame.LeftColumn.AnalysisResults[4];
                HndzAnalysisResults RColEndMin   = Frame.LeftColumn.AnalysisResults[5];

                HndzAnalysisResults RBeamStartMax = Frame.LeftColumn.AnalysisResults[0];
                HndzAnalysisResults RBeamMidMax   = Frame.LeftColumn.AnalysisResults[1];
                HndzAnalysisResults RBeamEndMax   = Frame.LeftColumn.AnalysisResults[2];

                HndzAnalysisResults RBeamStartMin = Frame.LeftColumn.AnalysisResults[3];
                HndzAnalysisResults RBeamMidMin   = Frame.LeftColumn.AnalysisResults[4];
                HndzAnalysisResults RBeamEndMin   = Frame.LeftColumn.AnalysisResults[5];
                //=============================================
                //HndzAnalysisResults RBeamEnd = Frame.LeftBeam.AnalysisResults[1];
                //HndzAnalysisResults RBeamStart = Frame.LeftBeam.AnalysisResults[0];
                //==================================
                //station 0 = 0 ,3
                //station 1 = 2 , 5
                //============================

                //foreach (HndzAnalysisResults RColEnd in Frame.LeftBeam.AnalysisResults)
                //{
                SectionI ColEstimated = CrossSectionCalulator.CalculateColumnSection(CrossSectionCalulator.SteelGrade.st37, ColumnHeight, RColStartMax.Axial, RColEndMax.Moment3);

                SectionI ColEndMax = BeamColumnDesign.DesignEnd(ColEstimated.d, ColEstimated.t_w, ColEstimated.b_fTop, ColEstimated.t_fTop,
                                                                ColEstimated.b_fBot, ColEstimated.t_fBot, RColEndMax.Axial, RColStartMax.Moment3, RColEndMax.Moment3, Fy,
                                                                LUnsupported, Kfactor, Lbin, Lbout, BeamColumnDesign.SwayCondtion.PermitedToSway,
                                                                BeamColumnDesign.SteelGrade.st37, BeamColumnDesign.LoadingType.Case2);
                SectionI ColStartMax = CrossSectionCalulator.SectionTaperedColumn(ColEndMax);


                ColStartMax = BeamColumnDesign.DesignStart(ColStartMax.d, ColStartMax.t_w, ColStartMax.b_fTop, ColStartMax.t_fTop, ColStartMax.b_fBot,
                                                           ColStartMax.t_fBot, RColStartMax.Axial, RColStartMax.Moment3, RColEndMax.Moment3, Fy, LUnsupported, Kfactor,
                                                           Lbin, Lbout, BeamColumnDesign.SwayCondtion.PermitedToSway, BeamColumnDesign.SteelGrade.st37,
                                                           BeamColumnDesign.LoadingType.Case2);

                ColStartMax = CrossSectionCalulator.PostProcessing(ColStartMax);
                ColEndMax   = CrossSectionCalulator.PostProcessing(ColEndMax);
                //=======================================================



                //HndzISectionProfile Start = new HndzISectionProfile(ColStartMax);
                //HndzISectionProfile End = new HndzISectionProfile(ColEndMax);

                //HndzITaperedProfile ColumnTaperedSectionMax = new HndzITaperedProfile(Start, End);

                //======================================
                SectionI ColEstimatedMin = CrossSectionCalulator.CalculateColumnSection(CrossSectionCalulator.SteelGrade.st37, ColumnHeight, RColStartMax.Axial, RColEndMax.Moment3);

                SectionI ColEndMin = BeamColumnDesign.DesignEnd(ColEstimatedMin.d, ColEstimatedMin.t_w, ColEstimatedMin.b_fTop, ColEstimatedMin.t_fTop,
                                                                ColEstimatedMin.b_fBot, ColEstimatedMin.t_fBot, RColEndMin.Axial, RColStartMin.Moment3, RColEndMin.Moment3, Fy,
                                                                LUnsupported, Kfactor, Lbin, Lbout, BeamColumnDesign.SwayCondtion.PermitedToSway,
                                                                BeamColumnDesign.SteelGrade.st37, BeamColumnDesign.LoadingType.Case2);
                SectionI ColStartMin = CrossSectionCalulator.SectionTaperedColumn(ColEndMin);


                ColStartMin = BeamColumnDesign.DesignStart(ColStartMin.d, ColStartMin.t_w, ColStartMin.b_fTop, ColStartMin.t_fTop, ColStartMin.b_fBot,
                                                           ColStartMin.t_fBot, RColStartMin.Axial, RColStartMin.Moment3, RColEndMin.Moment3, Fy, LUnsupported, Kfactor,
                                                           Lbin, Lbout, BeamColumnDesign.SwayCondtion.PermitedToSway, BeamColumnDesign.SteelGrade.st37,
                                                           BeamColumnDesign.LoadingType.Case2);

                ColStartMin = CrossSectionCalulator.PostProcessing(ColStartMin);
                ColEndMin   = CrossSectionCalulator.PostProcessing(ColEndMin);



                //HndzISectionProfile StartMin = new HndzISectionProfile(ColStartMin);
                //HndzISectionProfile EndMin = new HndzISectionProfile(ColEndMax);

                //HndzITaperedProfile ColumnTaperedSectionMin = new HndzITaperedProfile(Start, End);

                SectionI FinalSectionStartCol = CrossSectionCalulator.SectionCompare(ColStartMax, ColStartMin);
                SectionI FinalSectionEndCol   = CrossSectionCalulator.SectionCompare(ColEndMax, ColEndMin);

                HndzISectionProfile ColStart = new HndzISectionProfile(FinalSectionStartCol);
                HndzISectionProfile ColEnd   = new HndzISectionProfile(FinalSectionEndCol);

                HndzITaperedProfile ColumnTaperedSection = new HndzITaperedProfile(ColEnd, ColStart);
                //==========================================



                // }

                //foreach (HndzAnalysisResults RBeamStart in Frame.LeftBeam.AnalysisResults)
                //{
                SectionI BeamEstimatedMax = CrossSectionCalulator.CalculateBeamSection(CrossSectionCalulator.SteelGrade.st37, BeamLength, RBeamStartMax.Axial, RBeamStartMax.Moment3);

                SectionI BeamStartMax = BeamDesign.DesignStart(BeamEstimatedMax.d, BeamEstimatedMax.t_w, BeamEstimatedMax.b_fTop, BeamEstimatedMax.t_fTop,
                                                               BeamEstimatedMax.b_fBot, BeamEstimatedMax.t_fBot, RBeamStartMax.Axial, RBeamStartMax.Shear2, RBeamStartMax.Moment3, RBeamEndMax.Moment3, Fy, LUSupportedSap, KfactorBeamStart, BeamLength, PurlinSpacing, BeamDesign.SwayCondtion.PermitedToSway, BeamDesign.SteelGrade.st37, BeamDesign.LoadingType.Case2);

                SectionI BeamEndMAX = CrossSectionCalulator.SectionTaperedBeam(BeamStartMax);

                BeamEndMAX = BeamDesign.DesignEnd(BeamEndMAX.d, BeamEndMAX.t_w, BeamEndMAX.b_fTop, BeamEndMAX.t_fTop,
                                                  BeamEndMAX.b_fBot, BeamEndMAX.t_fBot,
                                                  RBeamEndMax.Axial, RBeamEndMax.Shear2, RBeamStartMax.Moment3, RBeamEndMax.Moment3, Fy, PurlinSpacing, KfactorBeamEnd, BeamLength, PurlinSpacing, BeamDesign.SwayCondtion.PermitedToSway, BeamDesign.SteelGrade.st37, BeamDesign.LoadingType.Case2);


                BeamStartMax = CrossSectionCalulator.PostProcessing(BeamStartMax);
                BeamEndMAX   = CrossSectionCalulator.PostProcessing(BeamEndMAX);

                //HndzISectionProfile StartBeamMax = new HndzISectionProfile(BeamStartMax);
                //HndzISectionProfile EndBeamMax = new HndzISectionProfile(BeamEndMAX);
                //HndzITaperedProfile BeamTaperedSectionMax = new HndzITaperedProfile(StartBeamMax, EndBeamMax, new Rhino.Geometry.Vector2d(0, 1));

                SectionI BeamEstimatedMin = CrossSectionCalulator.CalculateColumnSection(CrossSectionCalulator.SteelGrade.st37, ColumnHeight, RColStartMax.Axial, RColEndMax.Moment3);

                SectionI BeamEndMin = BeamColumnDesign.DesignEnd(BeamEstimatedMin.d, BeamEstimatedMin.t_w, BeamEstimatedMin.b_fTop, BeamEstimatedMin.t_fTop,
                                                                 BeamEstimatedMin.b_fBot, BeamEstimatedMin.t_fBot, RColEndMin.Axial, RColStartMin.Moment3, RColEndMin.Moment3, Fy,
                                                                 LUnsupported, Kfactor, Lbin, Lbout, BeamColumnDesign.SwayCondtion.PermitedToSway,
                                                                 BeamColumnDesign.SteelGrade.st37, BeamColumnDesign.LoadingType.Case2);
                SectionI BeamStartMin = CrossSectionCalulator.SectionTaperedColumn(BeamEndMin);


                BeamStartMin = BeamColumnDesign.DesignStart(BeamStartMin.d, BeamStartMin.t_w, BeamStartMin.b_fTop, BeamStartMin.t_fTop, BeamStartMin.b_fBot,
                                                            BeamStartMin.t_fBot, RColStartMin.Axial, RColStartMin.Moment3, RColEndMin.Moment3, Fy, LUnsupported, Kfactor,
                                                            Lbin, Lbout, BeamColumnDesign.SwayCondtion.PermitedToSway, BeamColumnDesign.SteelGrade.st37,
                                                            BeamColumnDesign.LoadingType.Case2);

                BeamStartMin = CrossSectionCalulator.PostProcessing(BeamStartMin);
                BeamEndMin   = CrossSectionCalulator.PostProcessing(BeamEndMin);

                //  HndzISectionProfile StartMinBeam = new HndzISectionProfile(BeamStartMin);
                // HndzISectionProfile EndMinBeam = new HndzISectionProfile(BeamEndMin);



                //HndzISectionProfile StartMinBeam = new HndzISectionProfile(BeamEndMin);

                //HndzISectionProfile EndMinBeam = new HndzISectionProfile(BeamStartMin);

                //HndzITaperedProfile BeamTaperedSectionMin = new HndzITaperedProfile(EndMinBeam,StartMinBeam,new Rhino.Geometry.Vector2d(0, 1));


                SectionI FinalSectionStartBeam = CrossSectionCalulator.SectionCompare(BeamStartMax, BeamStartMin);
                SectionI FinalSectionEndBeam   = CrossSectionCalulator.SectionCompare(BeamEndMAX, BeamEndMin);

                HndzISectionProfile BeamStart = new HndzISectionProfile(FinalSectionStartBeam);
                HndzISectionProfile BeamEnd   = new HndzISectionProfile(FinalSectionEndBeam);

                HndzITaperedProfile BeamTaperedSection = new HndzITaperedProfile(BeamStart, BeamEnd, new Rhino.Geometry.Vector2d(0, 1));


                //==========================================

                //}
                // Sections Assumbtions

                //========================================
                Frame.LeftColumn.Profile  = ColumnTaperedSection;
                Frame.RightColumn.Profile = ColumnTaperedSection;
                Frame.LeftBeam.Profile    = BeamTaperedSection;
                Frame.RightBeam.Profile   = BeamTaperedSection;

                //SectionChannel AssumedCSection = new SectionChannel("Assumed hotRolled C Section", 180, 80, 10, 4);
                //HndzISectionProfile bigProfile = new HndzISectionProfile(new SectionI("big", 1000 * 2, 500 * 2, 100 * 2, 50 * 2));
                //HndzISectionProfile smallProfile = new HndzISectionProfile(new SectionI("small", 1000, 500, 100, 50));
            }
            return(Frame3d);
        }
        ////============================
        //public bool CheckStress()
        //{
        //   return ((N / Area) / Fc) +( A1 * (Mx / Zx) / Fbx) + (A2 * (My / Zy) / Fby) > 1;

        //}
        //private double CheckWebThickness()
        //{

        //    return 0.0;

        //}
        //private double CheckWebHeight()
        //{
        //    return 0.0;

        //}
        //private double CheckTopFlangWidth()
        //{
        //    return 0.0;

        //}
        //private double CheckTopFlangThickness()
        //{
        //    return 0.0;

        //}
        //private double CheckBottomFlangThickness()
        //{
        //    return 0.0;

        //}
        //private double CheckBottomFlangWidth()
        //{
        //    return 0.0;

        //}
        //private double CheckMoment()
        //{
        //    return 0.0;

        //}
        //private double CheckShear()
        //{


        //    return 0.0;

        //}
        //public void /*- to be changed to handaz profile */ RetriveBuiltUpSection()
        //{



        //}

        #endregion
        public BuiltUpSectionDesginer(SectionI BuiltUpSection, HndzAnalysisResults AppliedLoads)
        {
            this.BuiltUpSection = BuiltUpSection;
            this.AppliedLoads   = AppliedLoads;
        }
Example #29
0
        public static HndzFrameSingleBay3D AssembleSections(HndzFrameSingleBay3D Frame3d)
        {
            foreach (HndzFrameSingleBay2D Frame in Frame3d.Frames2D)
            {
                double Fy             = 2.4;
                double LUSupportedSap = 4.11;
                //Kfactor Needs to Be calculated from InterActrion Diagrams - 2 For worst Case
                double Kfactor          = 2;
                double KfactorBeamEnd   = 0.7;
                double KfactorBeamStart = 0.65;
                double Lbin             = 8.5;
                double Lbout            = 5;
                double BeamLength       = 12;
                double PurlinSpacing    = 2;
                double ColumnHeight     = Frame.LeftBeam.ExtrusionLine.RhinoLine.Length;
                double LUnsupported     = ColumnHeight / 2;
                //What i want
                // Analysis Result at start and and end

                //Whats my Name ? Gecko
                HndzAnalysisResults RColStartMax = Frame.LeftBeam.AnalysisResults[0];
                HndzAnalysisResults RColMidMax   = Frame.LeftBeam.AnalysisResults[1];
                HndzAnalysisResults RColEndMax   = Frame.LeftBeam.AnalysisResults[2];

                HndzAnalysisResults RColStartMin = Frame.LeftBeam.AnalysisResults[3];
                HndzAnalysisResults RColMidMin   = Frame.LeftBeam.AnalysisResults[4];
                HndzAnalysisResults RColEndMin   = Frame.LeftBeam.AnalysisResults[5];
                //=============================================
                //HndzAnalysisResults RBeamEnd = Frame.LeftBeam.AnalysisResults[1];
                //HndzAnalysisResults RBeamStart = Frame.LeftBeam.AnalysisResults[0];
                //==================================
                //station 0 = 0 ,3
                //station 1 = 2 , 5
                //============================

                //foreach (HndzAnalysisResults RColEnd in Frame.LeftBeam.AnalysisResults)
                //{
                SectionI ColEstimated = CrossSectionCalulator.CalculateColumnSection(CrossSectionCalulator.SteelGrade.st37, ColumnHeight, RColStartMax.Axial, RColStartMax.Moment3);

                SectionI ColEnd = BeamColumnDesign.DesignEnd(ColEstimated.d, ColEstimated.t_w, ColEstimated.b_fTop, ColEstimated.t_fTop,
                                                             ColEstimated.b_fBot, ColEstimated.t_fBot, RColEndMax.Axial, RColStartMax.Moment3, RColEndMax.Moment3, Fy,
                                                             LUnsupported, Kfactor, Lbin, Lbout, BeamColumnDesign.SwayCondtion.PermitedToSway,
                                                             BeamColumnDesign.SteelGrade.st37, BeamColumnDesign.LoadingType.Case2);
                SectionI ColStart = CrossSectionCalulator.SectionTaperedColumn(ColEnd);


                ColStart = BeamColumnDesign.DesignStart(ColStart.d, ColStart.t_w, ColStart.b_fTop, ColStart.t_fTop, ColStart.b_fBot,
                                                        ColStart.t_fBot, RColStartMax.Axial, RColEndMax.Moment3, RColEndMax.Moment3, Fy, LUnsupported, Kfactor,
                                                        Lbin, Lbout, BeamColumnDesign.SwayCondtion.PermitedToSway, BeamColumnDesign.SteelGrade.st37,
                                                        BeamColumnDesign.LoadingType.Case2);

                HndzISectionProfile Start   = new HndzISectionProfile(ColStart);
                HndzISectionProfile End     = new HndzISectionProfile(ColEnd);
                HndzITaperedProfile Section = new HndzITaperedProfile(Start, End);

                Frame.LeftBeam.Profile  = Section;
                Frame.RightBeam.Profile = Section;
                // }

                //foreach (HndzAnalysisResults RBeamStart in Frame.LeftBeam.AnalysisResults)
                //{
                //    SectionI BeamEstimated = CrossSectionCalulator.CalculateBeamSection(CrossSectionCalulator.SteelGrade.st37, BeamLength, RBeamStart.Axial, RBeamStart.Moment3);

                //    SectionI BeamStart = BeamDesign.DesignStart(BeamEstimated.d, BeamEstimated.t_w, BeamEstimated.b_fTop, BeamEstimated.t_fTop,
                //      BeamEstimated.b_fBot, BeamEstimated.t_fBot, RBeamStart.Axial, RBeamStart.Shear2, RBeamStart.Moment3, RBeamEnd.Moment3, Fy, LUSupportedSap, KfactorBeamStart, BeamLength, PurlinSpacing, BeamDesign.SwayCondtion.PermitedToSway, BeamDesign.SteelGrade.st37, BeamDesign.LoadingType.Case2);

                //    SectionI BeamEnd = CrossSectionCalulator.SectionTaperedBeam(BeamStart);

                //    BeamEnd = BeamDesign.DesignEnd(BeamEnd.d, BeamEnd.t_w, BeamEnd.b_fTop, BeamEnd.t_fTop,
                //            BeamEnd.b_fBot, BeamEnd.t_fBot,
                //            RBeamEnd.Axial, RBeamEnd.Shear2, RBeamStart.Moment3, RBeamEnd.Moment3, Fy, PurlinSpacing, KfactorBeamEnd, BeamLength, PurlinSpacing, BeamDesign.SwayCondtion.PermitedToSway, BeamDesign.SteelGrade.st37, BeamDesign.LoadingType.Case2);


                //    HndzISectionProfile Start = new HndzISectionProfile(BeamStart);
                //    HndzISectionProfile End = new HndzISectionProfile(BeamEnd);

                //    HndzITaperedProfile Section = new HndzITaperedProfile(Start, End);



                //}
                // double AppliedLoads =
            }
            return(null);
        }
Example #30
0
        public static SectionI Design(HndzAnalysisResults resultStart, HndzAnalysisResults resultEnd, SectionI S, double _LUnsupported, double _LbInPlan, double kFactor, double _LbOutPlan, SteelGrade Grade, LoadingType Case, SwayCondtion Sway)
        {
            // List<SectionI> ColumnSections = new List<SectionI>();
            // Column.AnalysisResults.
            //  SectionI S = CrossSectionCalulator.CalculateSection(CrossSectionCalulator.SteelGrade.st37, resultEnd, 9.5);
            //  SectionI End = CrossSectionCalulator.CalculateSection(CrossSectionCalulator.SteelGrade.st37, resultEnd, 9.5);
            // SectionI s = new SectionI("x", 50, 28, 28, 1.4, 1.4, 0.8);

            BeamColumnDesignerBuiltUp.initDesigner(Grade, Case, _LUnsupported, _LbInPlan, _LbOutPlan, S, resultStart, resultEnd);
            do
            {
                bool a = BeamColumnDesignerBuiltUp.CheckIfWebComapact();
                bool b = BeamColumnDesignerBuiltUp.CheckIfFlangIsCompact();
                if (!WebIsCompact)
                {
                    S.d   = S.d * 1.05;
                    S.t_w = S.t_w * 1.05;
                    BeamColumnDesignerBuiltUp.CheckIfWebComapact();
                }
                if (!FlangIsCompact)
                {
                    S.t_fTop = S.t_fTop * 1.05;
                    S.b_fTop = S.b_fTop * 1.05;
                    S.t_fBot = S.t_fBot * 1.05;
                    S.b_fBot = S.b_fBot * 1.05;
                    BeamColumnDesignerBuiltUp.CheckIfFlangIsCompact();
                }
                //  BeamColumnDesignerBuiltUp.CheckIfSectionIsCompact();
            } while (!SectionIsCompact);
            BeamColumnDesignerBuiltUp.CheckColumnBuckling(kFactor);
            BeamColumnDesignerBuiltUp.CheckLateralTortionalBuckling(_LUnsupported);

            BeamColumnDesignerBuiltUp.CheckAllowableStresses(Sway);
            if (!BeamColumnDesignerBuiltUp.CheckAllowableStresses(Sway))
            {
                Design(resultStart, resultEnd, S, _LUnsupported, _LbInPlan, kFactor, _LbOutPlan, Grade, Case, Sway);
            }
            return(S);
        }