Exemplo n.º 1
0
 /// <summary>
 /// Главный конструктор
 /// </summary>
 /// <param name="_L">Длина заготовки</param>
 /// <param name="_dl">Список деталей</param>
 public Cutting(double _L, Detail_list _dl)
 {
     M          = _dl.list.Count;
     L          = _L;
     detailList = _dl;
     detailList.update_work_list();
     detailList.sort_by_l();
     cuttintgPatternList = new List <Cutting_Pattern>();
 }
Exemplo n.º 2
0
 /// <summary>
 /// Создание карты первый подходящий (первоначальное размещение), затем ее оптимизируем
 /// </summary>
 public void create_ffd_cutting_map()
 {
     detailList.update_work_list();
     //Пока не обработаны все делати
     while (!detailList.check_empty_wl())
     {
         Cutting_Pattern cp            = new Cutting_Pattern(M, L);
         int             currentDetail = 0;
         //Флаг перехода к следующей детали
         bool next = false;
         while (!next)
         {
             if (cp.add_detail(detailList.work_list[currentDetail])) //Если можно добавить текущую деталь
             {
                 detailList.work_list[currentDetail].cb--;
                 continue;
             }
             else
             {
                 if (cp.h == 0 || cp.h < detailList.work_list[detailList.work_list.Count - 1].l)
                 {
                     next = true;
                 }
                 else
                 {
                     if (currentDetail < detailList.work_list.Count - 1)
                     {
                         currentDetail++;
                     }
                     else
                     {
                         next = true;
                     }
                 }
             }
         }
         cuttintgPatternList.Add(cp);
     }
 }