Проектирование операций изготовления заготовок
Листинг 87.1. Передача исходных данных с Form3 в Form5.
//Объявляем объект myForm5 в классе Form5:
Form5 myForm5 = new Form5();
//Присваиваем исходные данные другим переменным
//класса панели Form5, но с такими же именами:
myForm5.d = d;
myForm5.H = H;
myForm5.Rn = Rn;
myForm5.s = s;
myForm5.Radio = Radio;
myForm5.s_sheet = s_sheet;
myForm5.C = C;
myForm5.L = L;
myForm5.rho = rho;
myForm5.nu = nu;
myForm5.El = El;
myForm5.sig_ys = sig_ys;
myForm5.sig_u = sig_u;
myForm5.e_u = e_u;
myForm5.e_tot = e_tot;
//Выводим диалоговую панель Form5:
myForm5.Show();
Открываем файл Form5.cs и в любом месте класса Form5 (например, после всех функций для кнопок) записываем наш основной код с методми для расчета параметров первой операции технологического процесса по разрезке листа на полосы; этот код мы берем без изменений с первого листинга предыдущей главы. Ниже записываем функцию для расчета силы вырубки Fcut круглой заготовки в штампе [1].
Листинг 87.2. Метод для расчета силы вырубки Fcut.
double ForceCut()
{
double A, k_cut, Fcut;
A=Area_Semiproduct();
D=Math.Sqrt(4*A/pi);
k_cut=1.2;
Fcut=pi*D*s_sheet*sig_u*k_cut/1000;
return Fcut;
}
Листинг 87.3. Код кнопки “=” Form5 для расчета второй операции.
//Объявляем переменные:
double Web_a, Web_b, Nblst, G, K_G;
//Расчет и передача в окна рациональных параметров
//разрезки листа на полосы, а полосы на заготовки:
Cutting(); //Эта функция нужна для расчета W_F.
//Расчет и передача значения ширины полосы "B"
//в окно textBox1 на Form5:
B = Bstrip();
textBox1.Text = B.ToString();
//Расчет и передача в окна на Form5 параметров раскроя:
D = DBlank();
textBox2.Text = D.ToString();
t = D + a;
textBox3.Text = t.ToString();
Web_a = a;
textBox4.Text = Web_a.ToString();
Web_b = b;
textBox5.Text = Web_b.ToString();
if (W_F==C)
{
Nblst = Math.Floor((L - a)/t);
textBox6.Text = Nblst.ToString();
G = Nblst * t;
textBox7.Text = G.ToString();
textBox8.Text = (L - G).ToString();
K_G = L;
textBox9.Text = L.ToString();
}
else
{
Nblst = Math.Floor((C - a)/t);
textBox6.Text = Nblst.ToString();
G = Nblst * t;
textBox7.Text = G.ToString();
textBox8.Text = (C - G).ToString();
K_G = C;
textBox9.Text = C.ToString();
}
//Сила вырезки заготовки в штампе:
textBox10.Text = ForceCut().ToString();
// Коэффициент раскроя полосы на заготовки
//диаметром D или D_blank:
textBox11.Text = (pi*D*D/4*Nblst/(K_G*B)).ToString();
Листинг 87.4. Код для выполнения анимации.
//Объявляем булеву переменную myText со значением false:
bool myText = false;
private void timer1_Tick(object sender, EventArgs e)
{
//Программируем анимацию:
if (myText == false)
{
//Выводим текст внутри элемента управления:
this.button1.Text = "Click";
//Изменяем значение myText на противоположное:
myText = true;
}
else
{
//Выводим другой текст внутри элемента управления: this.button1.Text = "OK";
//Изменяем значение myText на противоположное:
myText = false;
}
}
Аналогично вычисляются параметры раскроя других полос и для других изделий. По этим параметрам, задавая различные размеры листа (полосы или ленты, если заказчик получает от поставщика не листы, а полосы и ленты), пользователь может выбрать рациональный материал (размеры листа, полосы или ленты) и его оптимальный раскрой. Методика печати на принтере информации с панели описана выше.
На практике часто ограничиваются только двумя операциями разрезки листа на полосы и полосы на заготовки; в этом случае следующая операция технологического процесса не нужна, и, соответственно, не нужна и кнопка Next>> на Form5.
В нашем общем случае требуется, чтобы (после щелчка кнопки Next>> на Form5, рис. 87.1) выходила следующая форма Form7 со следующей операцией технологического процесса (и со следующим эффектом анимации), к разработке которой мы и приступаем.