История этой функции началась за долго до создания проекта Валентина. Во времена моей бакалаврськой работы в университете. Тогда она еще называлась "Раскрой листового проката на различные заготовки сложной формы". Не буду вдаваться в подробности той работы, скажу только, что работу я защитил очень успешно.
Поскольку я знал насколько сложна реализация такого алгоритма, я отложил до лучших времен реализацию этой функции в Валентине. И остановился на ручном варианте создания раскладки. Так мы жили до сих пор.
Но мечту я не оставил и в один прекрасный день, все обдумав, решил реализовать старый алгоритм здесь. Да и возможности ручной версии начали не удовлетворять пользователей и они все чаще с разных сторон критиковали этот "механизм". Это в конец меня добило и я решился.
И вот по происшествию 23 дней, а имен столько мне понадобилось, да, я замерял, интеграция была закончена. Стоит сказать что мне пришлось пройти несколько кругов ада моего старого кода и отладки сего чуда инженерной мысли. Результат на видео ниже.
Что же может это алгоритм? Можно сразу сказать чего он не может. Сотворить чуда и разложить идеально. Он "слепой" и видит только на один шаг - используется эвристика. Познакомится с оригинальной версией можно в книге Ф. В. Бабаев. "Оптимальный раскрой материалов с помощью ЭВМ". Распечатка нужной главы до сих пор хранится у меня.
Так все же что он может? Кроме того что раскладка создается автоматически, появилась возможность задавать форматы листов бумаги (А0 - А4) ну и конечно произвольный. На видео показана эта возможность. 2 листа А4 и один А3. Так же оставлена возможность сохранять страницы в поддерживаемые форматы. Особенно рекомендую SVG.
Для владельцев многоядерных машин у меня есть хорошая новость. Эта реализация использует все ядра системы. Раскладка в таком случаи будет проходить максимально быстро. Присутствует автоматическое определение оптимального количества потоков для машины.
Что здесь такого спросите вы? Ну, приятный бонус, а с другой стороны праздная необходимость. Поскольку в некоторых случаях расчет может длится очень долгое время. И все таки хотелось бы использовать все ресурсы нашего не дешевого процессора, а не просиживать штаны зря.
Комментариев нет:
Отправить комментарий