예제 #1
0
        /// <summary>
        /// Asettaa ryhmälle alku- ja loppupisteet suunnan ja kentän mittojen perusteella
        /// </summary>
        ///  <param name="kentta">Kenttä, jonka mittojen mukaan pisteet asetetaan</param>
        /// <param name="suunta">Mihin suuntaan tuki osoittaa kenttään nähden</param>
        /// <param name="ryhma">Harjateräsryhmä, johon suuntapisteet asetetaan</param>
        private void AsetaHarjaterasryhmalleAlkuJaLoppupiste(Kentta kentta, string suunta, HarjaterasRyhma ryhma)
        {
            switch (suunta)
            {
            case "vasen":
                ryhma.SijaintiAlku  = kentta.VasenAlanurkka;
                ryhma.SijaintiLoppu = new System.Drawing.Point(kentta.VasenAlanurkka.X, kentta.VasenAlanurkka.Y + (int)(kentta.Korkeus * 1000));
                break;

            case "ylos":
                ryhma.SijaintiAlku  = new System.Drawing.Point(kentta.VasenAlanurkka.X, kentta.VasenAlanurkka.Y + (int)(kentta.Korkeus * 1000));
                ryhma.SijaintiLoppu = new System.Drawing.Point(kentta.VasenAlanurkka.X + (int)(kentta.Leveys * 1000), kentta.VasenAlanurkka.Y + (int)(kentta.Korkeus * 1000));
                break;

            case "oikea":
                ryhma.SijaintiAlku  = new System.Drawing.Point(kentta.VasenAlanurkka.X + (int)(kentta.Leveys * 1000), kentta.VasenAlanurkka.Y + (int)(kentta.Korkeus * 1000));
                ryhma.SijaintiLoppu = new System.Drawing.Point(kentta.VasenAlanurkka.X + (int)(kentta.Leveys * 1000), kentta.VasenAlanurkka.Y);
                break;

            case "alas":
                ryhma.SijaintiLoppu = new System.Drawing.Point(kentta.VasenAlanurkka.X + (int)(kentta.Leveys * 1000), kentta.VasenAlanurkka.Y);
                ryhma.SijaintiAlku  = kentta.VasenAlanurkka;
                break;
            }
        }
예제 #2
0
        public Verkko LaskeNurkkaRaudoitus(Kentta kentta, double kuorma)
        {
            double momentti = (kuorma * Math.Min(kentta.Leveys, kentta.Korkeus) * Math.Max(kentta.Leveys, kentta.Korkeus)) / 40;

            System.Windows.Forms.MessageBox.Show("Momentti: " + momentti.ToString() + " kNm");
            int vaadittuRaudoitus = LaskeVaadittuRaudoitusPintaAla(momentti);

            return(LaskeSopivinVerkko(vaadittuRaudoitus, false));
        }
예제 #3
0
        private void RaudoitaKeskelle(Verkko verkko, ModelObject father, Point[] p, Kentta kentta)
        {
            if (verkko.Tyyppi == "Ei verkkoa")
            {
                return;
            }
            double  kenttaX         = Math.Min(kentta.Leveys, kentta.Korkeus);
            double  kenttaNeljasosa = kenttaX / 4 * 1000;
            Polygon polygon         = new Polygon();
            Point   p1 = new Point(p[0].X + kenttaNeljasosa + 10, p[0].Y + kenttaNeljasosa, 3000);
            Point   p2 = new Point(p[1].X + kenttaNeljasosa + 10, p[1].Y - kenttaNeljasosa, 3000);
            Point   p3 = new Point(p[2].X - kenttaNeljasosa + 10, p[2].Y - kenttaNeljasosa, 3000);
            Point   p4 = new Point(p[3].X - kenttaNeljasosa + 10, p[3].Y + kenttaNeljasosa, 3000);

            polygon.Points.Add(p1);
            polygon.Points.Add(p2);
            polygon.Points.Add(p3);
            polygon.Points.Add(p4);

            RebarMesh rMesh = new RebarMesh();

            rMesh.StartPoint                = p1;
            rMesh.EndPoint                  = p2;
            rMesh.CatalogName               = "Lisäverkko";
            rMesh.LongitudinalSize          = verkko.RaudanKoko.ToString();
            rMesh.CrossSize                 = verkko.RaudanKoko.ToString();
            rMesh.LeftOverhangCross         = 100.0;
            rMesh.LeftOverhangLongitudinal  = 100.0;
            rMesh.RightOverhangCross        = 100.0;
            rMesh.RightOverhangLongitudinal = 100.0;
            rMesh.LongitudinalSpacingMethod = RebarMesh.RebarMeshSpacingMethodEnum.SPACING_TYPE_SAME_DISTANCE;
            rMesh.LongitudinalDistances.Add(verkko.SilmaKokoVaaka);
            rMesh.CrossDistances.Add(verkko.SilmaKokoPysty);
            rMesh.Class = 7;
            rMesh.NumberingSeries.StartNumber = 0;
            rMesh.NumberingSeries.Prefix      = "Mesh";
            rMesh.Grade = verkko.Tyyppi;
            rMesh.OnPlaneOffsets.Add(verkko.SuojaBetoni);
            rMesh.FromPlaneOffset       = -verkko.SuojaBetoni;
            rMesh.StartPointOffsetType  = Reinforcement.RebarOffsetTypeEnum.OFFSET_TYPE_COVER_THICKNESS;
            rMesh.StartPointOffsetValue = verkko.SuojaBetoni;
            rMesh.StartFromPlaneOffset  = verkko.SuojaBetoni;

            rMesh.Name     = "Kentta " + kentta.Numero + " lisäraudoitus";
            rMesh.MeshType = RebarMesh.RebarMeshTypeEnum.POLYGON_MESH;
            rMesh.Polygon  = polygon;

            rMesh.CrossBarLocation = RebarMesh.RebarMeshCrossBarLocationEnum.LOCATION_TYPE_ABOVE;

            rMesh.EndFromPlaneOffset  = verkko.SuojaBetoni;
            rMesh.CutByFatherPartCuts = true;
            rMesh.Father = father;
            rMesh.Insert();
            malli.CommitChanges();
        }
예제 #4
0
 /// <summary>
 /// Skipataan tietyt kentät
 /// </summary>
 /// <param name="kentta"></param>
 /// <param name="suunta"></param>
 /// <returns></returns>
 private bool Skippaa(Kentta kentta, string suunta)
 {
     if (kentta.Numero == 2 || kentta.Numero == 4 || kentta.Numero == 6)
     {
         return(true);
     }
     if (kentta.Numero == 5 && suunta == "alas")
     {
         return(true);
     }
     return(false);
 }
예제 #5
0
 public Laskija(Kentta kentta, double kuormat)
 {
     InitializeComponent();
     lKentta.Text = "Kenttä " + kentta.Numero;
     this.kentta  = kentta;
     this.kuormat = kuormat * Math.Pow(Math.Min(kentta.Leveys, kentta.Korkeus), 2);
     b_arvot      = new double[4];
     AlustaMomenttiTaulukko();
     AlustaJaykistysTaulukko();
     AlustaMomenttikertoimet();
     AlustaKenttamomenttienKertoimet();
 }
예제 #6
0
        /// <summary>
        /// Laskee tukiraudoitukset tietylle kentälle kaikkiin suuntiin
        /// </summary>
        /// <param name="kentta">Kenttä, jolle tukiraudoitukset lasketaan</param>
        public void LaskeTukiraudoituksetKentalle(Kentta kentta)
        {
            #region Virheenkorjaus
            string[] vaaditutRaudoitukset = new string[8];
            int      i = 0;
            #endregion

            foreach (string suunta in kentta.HaeTasatutTukimomentit().Keys)
            {
                double          momentti          = kentta.HaeTasattuTukimomentti(suunta);
                int             vaadittuRaudoitus = LaskeVaadittuRaudoitusPintaAla(momentti * 1000);
                HarjaterasRyhma sopivaRyhma       = LaskeSopivinHarjaterasryhma(vaadittuRaudoitus);
                AsetaHarjaterasryhmalleAlkuJaLoppupiste(kentta, suunta, sopivaRyhma);
                sopivaRyhma.TankojenPituus = 1000;
                sopivaRyhma.Tyyppi         = "A500HW";
                if (kentta.Tukiraudat.ContainsKey(suunta))
                {
                    kentta.Tukiraudat[suunta] = sopivaRyhma;
                }
                else
                {
                    kentta.Tukiraudat.Add(suunta, sopivaRyhma);
                }
                #region Virheenkorjaus
                vaaditutRaudoitukset[i] = vaadittuRaudoitus.ToString();
                i++;
                #endregion
            }
            #region Virheenkorjaus
            if (VirheenkorjausTukiraudat)
            {
                StringBuilder debug = new StringBuilder();
                i = 0;
                foreach (string suunta in kentta.Tukiraudat.Keys)
                {
                    debug.Append("Suunta: " + suunta + "\n");
                    debug.Append("Koko: " + kentta.HaeTukiraudat(suunta).Koko + "\n");
                    debug.Append("Jako: " + kentta.HaeTukiraudat(suunta).Jako + "\n");
                    debug.Append("Raudoituksen pinta-ala metrille: " + (int)kentta.HaeTukiraudat(suunta).PintaAlaMetrille + "\n");
                    debug.Append("Vaadittu pinta-ala: " + vaaditutRaudoitukset[i] + "\n\n");
                    i++;
                }
                System.Windows.Forms.MessageBox.Show(debug.ToString(), "Kenttä " + kentta.Numero);
            }
            #endregion
        }
예제 #7
0
        private Polygon HaeTukiraudoituksenPolygon(Kentta kentta, string suunta, RebarGroup rGroup)
        {
            Polygon polygon = new Polygon();

            switch (suunta)
            {
            case "vasen":
                rGroup.StartPoint = new Point(kentta.Tukiraudat[suunta].SijaintiAlku.X, kentta.Tukiraudat[suunta].SijaintiAlku.Y, 3000);
                rGroup.EndPoint   = new Point(kentta.Tukiraudat[suunta].SijaintiLoppu.X, kentta.Tukiraudat[suunta].SijaintiLoppu.Y, 3000);
                polygon.Points.Add(new Point(kentta.VasenAlanurkka.X - 100, kentta.VasenAlanurkka.Y, 3000));
                polygon.Points.Add(new Point(kentta.VasenAlanurkka.X + 100, kentta.VasenAlanurkka.Y, 3000));
                break;

            case "ylos":
                rGroup.StartPoint = new Point(kentta.Tukiraudat[suunta].SijaintiAlku.X, kentta.Tukiraudat[suunta].SijaintiAlku.Y, 3000);
                rGroup.EndPoint   = new Point(kentta.Tukiraudat[suunta].SijaintiLoppu.X, kentta.Tukiraudat[suunta].SijaintiLoppu.Y, 3000);
                polygon.Points.Add(new Point(kentta.VasenAlanurkka.X, kentta.VasenAlanurkka.Y + kentta.Korkeus * 1000 + 100, 3000));
                polygon.Points.Add(new Point(kentta.VasenAlanurkka.X, kentta.VasenAlanurkka.Y + kentta.Korkeus * 1000 - 100, 3000));
                break;

            case "oikea":
                rGroup.EndPoint   = new Point(kentta.Tukiraudat[suunta].SijaintiAlku.X, kentta.Tukiraudat[suunta].SijaintiAlku.Y, 3000);
                rGroup.StartPoint = new Point(kentta.Tukiraudat[suunta].SijaintiLoppu.X, kentta.Tukiraudat[suunta].SijaintiLoppu.Y, 3000);
                polygon.Points.Add(new Point(kentta.VasenAlanurkka.X + kentta.Leveys * 1000 - 100, kentta.VasenAlanurkka.Y, 3000));
                polygon.Points.Add(new Point(kentta.VasenAlanurkka.X + kentta.Leveys * 1000 + 100, kentta.VasenAlanurkka.Y, 3000));
                break;

            case "alas":
                rGroup.StartPoint = new Point(kentta.Tukiraudat[suunta].SijaintiAlku.X, kentta.Tukiraudat[suunta].SijaintiAlku.Y, 3000);
                rGroup.EndPoint   = new Point(kentta.Tukiraudat[suunta].SijaintiLoppu.X, kentta.Tukiraudat[suunta].SijaintiLoppu.Y, 3000);
                polygon.Points.Add(new Point(kentta.VasenAlanurkka.X, kentta.VasenAlanurkka.Y + 100, 3000));
                polygon.Points.Add(new Point(kentta.VasenAlanurkka.X, kentta.VasenAlanurkka.Y - 100, 3000));
                break;
            }
            return(polygon);
        }
예제 #8
0
 public RaudoitusForm(Raudoittaja raudoittaja, Kentta kentta)
 {
     InitializeComponent();
     this.raudoittaja = raudoittaja;
     this.kentta      = kentta;
 }
예제 #9
0
 public Laskija(Kentta kentta, double kuormat, double hyotykuormat) : this(kentta, kuormat)
 {
     this.hyotykuormat = hyotykuormat;
 }
예제 #10
0
 public Laskija(Kentta kentta, double kuormat, bool verbose) : this(kentta, kuormat)
 {
     this.virheenkorjausMomentti  = true;
     this.virheenkorjausJaykistys = true;
 }