예제 #1
0
        public override int GetHashCode()
        {
            int hash = 1;

            hash ^= sMarkers_.GetHashCode();
            if (SStep != 0D)
            {
                hash ^= SStep.GetHashCode();
            }
            if (Strategy.Length != 0)
            {
                hash ^= Strategy.GetHashCode();
            }
            return(hash);
        }
예제 #2
0
        private void SCalculation_Click(object sender, RoutedEventArgs e)
        {
            bool go = true;

            while (SIsNotRotating.IsChecked == true && go == true)
            {
                double[] Inst = new double[9];
                double   temp;
                double   newtemp;

                try
                {
                    temp = Convert.ToDouble(SCoef_of_exp.GetLineText(0));

                    if (temp < 0.000002 || temp > 0.00144)
                    {
                        throw new FormatException();
                    }
                    Inst[0] = temp;
                }
                catch (FormatException)
                {
                    MessageBox.Show("Значение Коэффициента линейного расширения ролика должно находиться в пределах от 0,000002 до 0,00144");
                    SCoef_of_exp.Clear();
                    SCoef_of_exp.Focus();
                    go = false;
                    break;
                }

                try
                {
                    temp = Convert.ToDouble(SWidth_of_slab_First.GetLineText(0));

                    if (temp > 5000 || temp < 350)
                    {
                        throw new FormatException();
                    }
                    Inst[1] = temp;
                }

                catch (FormatException)
                {
                    MessageBox.Show("Значение ширины сляба должно находиться в диапазоне от 350 до 5000");
                    SWidth_of_slab_First.Clear();
                    SWidth_of_slab_First.Focus();
                    go = false;
                    break;
                }


                try
                {
                    newtemp = Convert.ToDouble(SWidth_of_slab_Second.GetLineText(0));

                    if (temp > 5000 || temp < 350 || newtemp <= temp)
                    {
                        throw new FormatException();
                    }
                    Inst[2] = newtemp;
                }

                catch (FormatException)
                {
                    MessageBox.Show("Значение ширины сляба должно находиться в диапазоне от 350 до 5000 и должно должно быть больше начального значения");
                    SWidth_of_slab_Second.Clear();
                    SWidth_of_slab_Second.Focus();
                    go = false;
                    break;
                }


                try
                {
                    temp = Convert.ToDouble(SLenght_of_roller.GetLineText(0));

                    if (temp > 10000 || temp < 1000)
                    {
                        throw new FormatException();
                    }
                    Inst[3] = temp;
                }

                catch (FormatException)
                {
                    MessageBox.Show("Значение длины ролика должно находиться в диапазоне от 1000 до 10000");
                    SLenght_of_roller.Clear();
                    SLenght_of_roller.Focus();
                    go = false;
                    break;
                }

                try
                {
                    temp = Convert.ToDouble(SInner_radius.GetLineText(0));

                    if (temp > 75 || temp < 0)
                    {
                        throw new FormatException();
                    }
                    Inst[4] = temp;
                }

                catch (FormatException)
                {
                    MessageBox.Show("Значение внутреннего радиуса ролика должно находиться в диапазоне от 0 (Ролик сплошной) до 75 мм");
                    SInner_radius.Clear();
                    SInner_radius.Focus();
                    go = false;
                    break;
                }

                try
                {
                    temp = Convert.ToDouble(SOuter_radius.GetLineText(0));

                    if (temp > 300 || temp < 70)
                    {
                        throw new FormatException();
                    }
                    Inst[5] = temp;
                }

                catch (FormatException)
                {
                    MessageBox.Show("Значение внешнего радиуса ролика должно находиться в диапазоне от 70 до 300 мм");
                    SOuter_radius.Clear();
                    SOuter_radius.Focus();
                    go = false;
                    break;
                }

                try
                {
                    temp = Convert.ToDouble(SCoef_of_Fourier_q1.GetLineText(0));

                    if (temp > 100 || temp < 80)
                    {
                        throw new FormatException();
                    }
                    Inst[6] = temp;
                }

                catch (FormatException)
                {
                    MessageBox.Show("Значение коэффициента Фурье должно находиться в диапазоне от 80 до 100");
                    SCoef_of_Fourier_q1.Clear();
                    SCoef_of_Fourier_q1.Focus();
                    go = false;
                    break;
                }

                try
                {
                    temp = Convert.ToDouble(SCoef_of_Fourier_q2.GetLineText(0));

                    if (temp > 27 || temp < 22)
                    {
                        throw new FormatException();
                    }
                    Inst[7] = temp;
                }

                catch (FormatException)
                {
                    MessageBox.Show("Значение коэффициента Фурье должно находиться в диапазоне от 22 до 27");
                    SCoef_of_Fourier_q2.Clear();
                    SCoef_of_Fourier_q2.Focus();
                    go = false;
                    break;
                }

                try
                {
                    temp = Convert.ToDouble(SStep.GetLineText(0));

                    if (temp > 1000 || temp < 10)
                    {
                        throw new FormatException();
                    }
                    Inst[8] = temp;
                }

                catch (FormatException)
                {
                    MessageBox.Show("Значение шага итерации должно находиться в диапазоне от 10 до 1000");
                    SStep.Clear();
                    SStep.Focus();
                    go = false;
                    break;
                }

                rot = new SNonRotating(Inst);
                go  = false;

                SResults.Clear();
                SResults.AppendText(rot.Show());

                MessageBox.Show("Для наглядности представления зависимостей, значение Температурной составляющей деформации оси ролика в направлении Z домножено на 100 и поделено на Коэффициент Фурье");
            }

            while (SIsRotating.IsChecked == true && go == true)
            {
                double[] Inst = new double[8];
                double   temp, newtemp;

                try
                {
                    temp = Convert.ToDouble(SCoef_of_exp.GetLineText(0));

                    if (temp < 0.000002 || temp > 0.00144)
                    {
                        throw new FormatException();
                    }
                    Inst[0] = temp;
                }
                catch (FormatException)
                {
                    MessageBox.Show("Значение Коэффициента линейного расширения ролика должно находиться в пределах от 0,000002 до 0,00144");
                    SCoef_of_exp.Clear();
                    SCoef_of_exp.Focus();
                    go = false;
                    break;
                }

                try
                {
                    temp = Convert.ToDouble(SWidth_of_slab_Second.GetLineText(0));

                    if (temp > 5000 || temp < 350)
                    {
                        throw new FormatException();
                    }
                    Inst[1] = temp;
                }

                catch (FormatException)
                {
                    MessageBox.Show("Значение ширины сляба должно находиться в диапазоне от 350 до 5000");
                    SWidth_of_slab_Second.Clear();
                    SWidth_of_slab_Second.Focus();
                    go = false;
                    break;
                }

                try
                {
                    temp = Convert.ToDouble(SLenght_of_roller.GetLineText(0));

                    if (temp > 10000 || temp < 1000)
                    {
                        throw new FormatException();
                    }
                    Inst[2] = temp;
                }

                catch (FormatException)
                {
                    MessageBox.Show("Значение длины ролика должно находиться в диапазоне от 1000 до 10000");
                    SLenght_of_roller.Clear();
                    SLenght_of_roller.Focus();
                    go = false;
                    break;
                }

                try
                {
                    temp = Convert.ToDouble(SInner_radius.GetLineText(0));

                    if (temp != 0 && temp != 37.5 && temp != 45.0 && temp != 75.0)
                    {
                        throw new FormatException();
                    }
                    Inst[3] = temp;
                }

                catch (FormatException)
                {
                    MessageBox.Show("Значение внутреннего радиуса ролика может принимать значения:\n" +
                                    "0.0 при внешем радиусе 70.0 мм, 90.0 мм, 107.5 мм, 120.5 мм\n" +
                                    "37.5 мм при внешнем радуису 135.0 мм\n" +
                                    "45.0 мм при внешнем радуису 165.0 мм\n" +
                                    "75.0 мм при внешнем радуису 240.0 мм и 300.0 мм");
                    SInner_radius.Clear();
                    SInner_radius.Focus();
                    go = false;
                    break;
                }

                try
                {
                    newtemp = Convert.ToDouble(SOuter_radius.GetLineText(0));

                    switch (temp)
                    {
                    case 0.0:
                        if (newtemp != 70.0 && newtemp != 90 && newtemp != 107.5 && newtemp != 120.5)
                        {
                            throw new FormatException();
                        }
                        Inst[4] = newtemp;
                        break;

                    case 37.5:
                        if (newtemp != 135.0)
                        {
                            throw new FormatException();
                        }
                        Inst[4] = newtemp;
                        break;

                    case 45:
                        if (newtemp != 165.0)
                        {
                            throw new FormatException();
                        }
                        Inst[4] = newtemp;
                        break;

                    case 75:
                        if (newtemp != 240.0 && newtemp != 300.0)
                        {
                            throw new FormatException();
                        }
                        Inst[4] = newtemp;
                        break;

                    default:
                        throw new FormatException();
                    }
                }

                catch (FormatException)
                {
                    MessageBox.Show("Значение внешнего радиуса ролика может принимать значения:\n" +
                                    "70.0 мм, 90.0 мм, 107.5 мм, 120.5 мм при внутреннем радиусе 0.0 мм\n" +
                                    "135.0 мм при внутреннем радиусе 37.5 мм\n" +
                                    "165.0 мм при внутреннем радиусе 45.0 мм\n" +
                                    "240.0 мм и 300.0 мм при внутреннем радиусе 75.0 мм");
                    SOuter_radius.Clear();
                    SOuter_radius.Focus();
                    go = false;
                    break;
                }

                try
                {
                    temp = Convert.ToDouble(SSpeed_of_stream_First.GetLineText(0));

                    if (temp > 5 || temp < 0.2)
                    {
                        throw new FormatException();
                    }
                    Inst[5] = temp;
                }

                catch (FormatException)
                {
                    MessageBox.Show("Значение скорости разливки должно находиться в диапазоне 0.2 до 1.2");
                    SSpeed_of_stream_First.Clear();
                    SSpeed_of_stream_First.Focus();
                    go = false;
                    break;
                }

                try
                {
                    newtemp = Convert.ToDouble(SSpeed_of_stream_Second.GetLineText(0));

                    if (newtemp > 5 || newtemp < 0.2 || newtemp <= temp)
                    {
                        throw new FormatException();
                    }
                    Inst[6] = newtemp;
                }

                catch (FormatException)
                {
                    MessageBox.Show("Значение скорости разливки должно находиться в диапазоне 0.2 до 5 и быть больше начального значения");
                    SSpeed_of_stream_Second.Clear();
                    SSpeed_of_stream_Second.Focus();
                    go = false;
                    break;
                }

                try
                {
                    temp = Convert.ToDouble(SStep.GetLineText(0));

                    if (temp > 2 || temp < 0.001)
                    {
                        throw new FormatException();
                    }
                    Inst[7] = temp;
                }

                catch (FormatException)
                {
                    MessageBox.Show("Значение шага итерации должно находиться в диапазоне от 0.001 до 2");
                    SStep.Clear();
                    SStep.Focus();
                    go = false;
                    break;
                }

                rot = new SRotating(Inst);
                go  = false;

                SResults.Clear();
                SResults.AppendText(rot.Show());
                MessageBox.Show("Для наглядности представления зависимостей, значение Температурной составляющей деформации оси ролика в направлении Z домножено на 100 и поделено на Коэффициент Фурье");
            }
        }