示例#1
0
 public HndzITaperedProfile(string name, string description, HndzISectionProfile startProfile, HndzISectionProfile endProfile, Vector2d orientation)
     : base(name, description, orientation)
 {
     StartProfile = startProfile;
     EndProfile   = endProfile;
     //if (StartProfile.OrientationInPlane==EndProfile.OrientationInPlane)
     //{
     //    OrientationInPlane = StartProfile.OrientationInPlane;
     //}
 }
        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);
        }
示例#3
0
 public HndzITaperedProfile(HndzISectionProfile startProfile, HndzISectionProfile endProfile, Vector2d orientation = default(Vector2d))
     : this(HndzResources.DefaultName, HndzResources.DefaultDescription, startProfile, endProfile, orientation)
 {
 }