public void output(Cutting c) { int rows = c.cuttintgPatternList.Count; int cols = c.detailList.list.Count + 1; dg_output.Columns.Add("num", "Номер карты"); for (int i = 0; i < cols - 1; ++i) { dg_output.Columns.Add("c" + i.ToString(), c.detailList.list[i].l.ToString()); } dg_output.Columns.Add("c" + cols.ToString(), "Остаток"); for (int i = 0; i < rows; i++) { dg_output.Rows.Add(); } for (int i = 0; i < rows; i++) { dg_output.Rows[i].Cells[0].Value = (i + 1).ToString(); for (int j = 1; j < cols; ++j) { dg_output.Rows[i].Cells[j].Value = c.cuttintgPatternList[i].map[j - 1].ToString(); } dg_output.Rows[i].Cells[cols].Value = c.cuttintgPatternList[i].h; } labelCoef.Text = Math.Round(c.calc_coef(), 2).ToString(); }
private void button_create_cutting_single_Click(object sender, EventArgs e) { if (dg_input.Rows.Count < 2) { MessageBox.Show("Деталей для раскроя должно быть, как минимум две", "Ошибка"); return; } dg_output.Rows.Clear(); dg_output.Columns.Clear(); dl = new Detail_list(dg_input.RowCount - 1); dl.list.Clear(); dg_to_dl(); if (Convert.ToDouble(tb_length.Text) < dl.calc_max()) { MessageBox.Show("Одна из деталей длиннее заготовки", "Ошибка"); return; } label_best.Text = "0"; Cutting cutting = new Cutting(Convert.ToDouble(tb_length.Text), dl); //Создали карту раскроя первый подходящий cutting.create_ffd_cutting_map(); //Расчитали нижнюю границу cutting.calc_botton_border(); if (cutting.cuttintgPatternList.Count > cutting.bottom_border) { int i = 0; while (true) { cutting.S_task(); ++i; if (cutting.cuttintgPatternList.Count == cutting.bottom_border || i > 100) { break; } } } output(cutting); label_best.Text = tb_length.Text; }