/// <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>(); }
/// <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); } }