Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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;
        }