public HarjaterasRyhma LaskeSopivinHarjaterasryhma(int vaadittuTeras) { HarjaterasRyhma palautus = new HarjaterasRyhma(); foreach (int i in Enum.GetValues(typeof(HarjaterasRyhma.TerasKoot))) { if (i < asetukset.MinTerasKoko) { continue; } palautus.Koko = i; palautus.Jako = 200; if (palautus.PintaAlaMetrille > vaadittuTeras) { if (asetukset.TukiRaudJako == 150) { continue; } return(palautus); } palautus.Jako = 150; if (palautus.PintaAlaMetrille > vaadittuTeras) { if (asetukset.TukiRaudJako == 200) { continue; } return(palautus); } } return(null); }
/// <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 }
/// <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; } }