Пример #1
0
        private void MallinnaKenttaraudoitusVerkot(ContourPlate laatta)
        {
            for (int i = 0; i < kentat.Length; i++)
            {
                Polygon polygon = new Polygon();
                Point   p1      = kentat[i].VasenAlanurkkaTekla;
                Point   p2      = new Point(kentat[i].VasenAlanurkkaTekla.X, kentat[i].VasenAlanurkkaTekla.Y + kentat[i].Korkeus * 1000, 3000);
                Point   p3      = new Point(kentat[i].VasenAlanurkkaTekla.X + kentat[i].Leveys * 1000, kentat[i].VasenAlanurkkaTekla.Y + kentat[i].Korkeus * 1000, 3000);
                Point   p4      = new Point(kentat[i].VasenAlanurkkaTekla.X + kentat[i].Leveys * 1000, kentat[i].VasenAlanurkkaTekla.Y, 3000);
                polygon.Points.Add(p1);
                polygon.Points.Add(p2);
                polygon.Points.Add(p3);
                polygon.Points.Add(p4);

                Verkko raudoitus = kentat[i].RaudoitusYleensa;
                if (raudoitus.Tyyppi == "Ei sopivaa")
                {
                    continue;
                }
                double silmavali  = raudoitus.SilmaKokoVaaka;
                string verkonKoko = raudoitus.RaudanKoko.ToString();

                RebarMesh rMesh = new RebarMesh();
                rMesh.StartPoint                = p1;
                rMesh.EndPoint                  = p2;
                rMesh.CatalogName               = "Vähimmäisraudoitus";
                rMesh.LongitudinalSize          = verkonKoko;
                rMesh.CrossSize                 = verkonKoko;
                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(silmavali);
                rMesh.CrossDistances.Add(silmavali);
                rMesh.Class = 7;
                rMesh.NumberingSeries.StartNumber = 0;
                rMesh.NumberingSeries.Prefix      = "Mesh";
                rMesh.Grade = raudoitus.Tyyppi;
                rMesh.OnPlaneOffsets.Add(raudoitus.SuojaBetoni);
                rMesh.FromPlaneOffset       = -raudoitus.SuojaBetoni;
                rMesh.StartPointOffsetType  = Reinforcement.RebarOffsetTypeEnum.OFFSET_TYPE_COVER_THICKNESS;
                rMesh.StartPointOffsetValue = raudoitus.SuojaBetoni;
                rMesh.StartFromPlaneOffset  = raudoitus.SuojaBetoni;

                rMesh.Name     = "Kentta " + kentat[i].Numero;
                rMesh.MeshType = RebarMesh.RebarMeshTypeEnum.POLYGON_MESH;
                rMesh.Polygon  = polygon;

                rMesh.CrossBarLocation = RebarMesh.RebarMeshCrossBarLocationEnum.LOCATION_TYPE_ABOVE;

                rMesh.EndFromPlaneOffset  = raudoitus.SuojaBetoni;
                rMesh.CutByFatherPartCuts = true;
                rMesh.Father = laatta;
                rMesh.Insert();
                malli.CommitChanges();
                RaudoitaKeskelle(kentat[i].RaudoitusKeskella, laatta, new Point[] { p1, p2, p3, p4 }, kentat[i]);
            }
        }
Пример #2
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();
        }
Пример #3
0
 public Raudoittaja(Kentta[] kentat, Asetukset asetukset)
 {
     tKasittelija              = new Tiedostonkasittelija(Paaikkuna.HAKEMISTO);
     this.kentat               = kentat;
     this.asetukset            = asetukset;
     puristuslujuudenKeskiarvo = asetukset.BetoninLujuus + 8;
     if (asetukset.BetoninLujuus <= 50)
     {
         vetolujuudenKeskiarvo = 0.3 * Math.Pow(asetukset.BetoninLujuus, 2.0 / 3.0);
     }
     else
     {
         vetolujuudenKeskiarvo = 2.12 * Math.Log(1 + (puristuslujuudenKeskiarvo / 10));
         tKasittelija.KirjoitaLokiin("Betoninlujuus > 50 !");
     }
     ominaisVetolujuus = 0.7 * vetolujuudenKeskiarvo;
     VerkkoKeskella    = new Verkko("Ei verkkoa", 0, 0, 0);
     AlustaVerkkotyypit();
 }