Python
Требуется разработка Python-скрипта для автоматизации упаковки геометрических фигур с интеграцией их в DXF файл
Описание проекта:
Необходимо создать скрипт, который:
1. Генерирует фигуры (прямоугольники, квадраты, круги) на основе входных данных:
- Формат входных данных: [длина×ширина]
или [радиус]
+ текстовая метка с номером заказа.
- Каждая фигура должна содержать номер заказа, отцентрированный шрифтом simplex.shx
.
- Точное соответствие геометрии: углы прямоугольников – 90°, окружности – без искажений многополигональные.
2. Оптимизирует размещение фигур на листе:
- Реализация алгоритма 2D bin packing с поддержкой поворотов фигур (90°, 45 °).
- Минимизация свободного пространства: целевой коэффициент заполнения ≥85%.
- Учет зазоров между фигурами (настраивается через конфиг).
3. Экспортирует результат в формат .dxf
(AutoCAD 2018+ совместимость):
- Отдельные слои для контуров фигур и текста.
Конфигурационный файл:
- Формат: YAML/JSON.
- Параметры:
```yaml
sheet:
width: 9999999 # мм
height: 1420 # мм
gaps:
default: 3.5 # мм
circle: 4 # мм (специфичный зазор для кругов)
colors:
rectangle: "#FF0000"
circle: "#00FF00"
text: “#……”
metadata_masks:
- pattern: "круг*" # шаблон для фильтрации
params: {color: "#0000FF", gap: 15}
```
Требования к качеству:
- Точность позиционирования: ±0.01 мм.
- Обработка краевых случаев: пересечения фигур (недопустимо), выход за границы листа (недопустимо).
- Валидация входных данных (ошибки формата, дубликаты номеров заказов).
Ожидания от исполнителя:
- Портфолио с примерами проектов по 2D-оптимизации или CAD-автоматизации.
- Понимание алгоритмов упаковки (Guillotine, Maximal Rectangles, Skyline).
- Опыт работы с библиотеками ezdxf
, trimesh
, rectpack
. (Не принципиально использование rectpack если не получается достичь целевого коэффициента заполнения. Напомню что целевой показатель более 85%)
Результат:
- Рабочий скрипт с документацией.
- Примеры тестовых данных и конфигов.
- Инструкция по настройке.
Детализация требований будет предоставлена после согласования.
Заявки фрилансеров
