Текущий процесс #
Извлечение из PDF, SVG и DXF по-прежнему выполняется в изолированном процессе-парсере. Замкнутые нормализованные исходные контуры сохраняются в parts.geometry; с каждым контуром остаются связаны исходный файл, масштаб, исходная точка отсчёта, цвет заливки/обводки и ссылка на объект/слой. Составные подпути SVG остаются вместе как один исходный объект, поэтому типичная составная форма «буква с внутренним контуром» остаётся одним полигоном с внутренним кольцом. Отдельные SVG-элементы и объекты рисования PDF сохраняются раздельно и не объединяются только потому, что один находится внутри другого.
ProductionElement и ElementGeometry — это слой интерпретации. Производственный элемент — это одно физически изготавливаемое изделие; сопоставления назначают сохранённым исходным контурам роли BODY_OUTER, CUTOUT, GRAPHIC, SEPARATE_PART или IGNORE. Стабильная таблица ролей поддерживает будущие имена слоёв через material_layer. Каждая созданная вручную деталь и каждый простой импортированный контур оборачивается в один подтверждённый элемент BODY для обратной совместимости.
Проход топологии записывает родителя по вложенности, глубину, пересечения и расстояния. Вложенность и цвет — только подсказки. Вложенные или пересекающиеся отдельные объекты помечаются на проверку и не могут раскладываться или попадать в предложение, пока не будут подтверждены. Оператор может выбрать контуры в векторном режиме проверки, сгруппировать их как один BODY плюс графику, задать роли, назначить слой графики/материала, отделить контур, разгруппировать или игнорировать контуры. Исходная геометрия контуров и координаты при группировке не переписываются.
Производственная геометрия #
Раскладка и оценки Channel Letters используют производную производственную геометрию. Для каждого подтверждённого элемента контуры BODY выравниваются по сохранённым исходным точкам отсчёта, объединяются, а контуры CUTOUT вычитаются. Контуры GRAPHIC, IGNORE и неактивные исключаются. Результат — полигональная геометрия контура с отверстиями; исходные записи Part остаются нетронутыми. Поэтому метрики тыла, лица, борта и LED выводятся из одного физического элемента, а не из графических наложений как отдельных листовых деталей. Площади графики и назначения слоёв остаются доступными для будущих операций с плёнкой/печатью; калькуляция графики пока не реализована.
Ключи геометрии включают каноническую геометрию контура и количество элементов, поэтому правка body/внутреннего контура инвалидирует затронутую раскладку. Правка только роли графики оставляет ключ раскладки без изменений. Исходные координаты не меняются; раскладка получает собственную производную/трансформированную геометрию.
Ревизии и миграция #
Миграция c91b7a4d2e60 создаёт таблицы производственных элементов и ролей контуров и заполняет каждую существующую Part как подтверждённый одноконтурный элемент BODY. Новые снимки ревизий сохраняют элементы и сопоставления ролей. Исторические снимки, сделанные до этой миграции, отображаются как один элемент BODY на каждую сохранённую Part; продолжение/восстановление такой ревизии создаёт эквивалентные сопоставления по умолчанию. Правка интерпретации влияет только на рабочее состояние расчёта и фиксируется при сохранении новой ревизии.
Ограничения #
Конвейер импорта сейчас нормализует замкнутые производственные контуры. Он пока не хранит полноценную редактируемую модель для открытых путей гравировки/обводки, PDF clipping paths, CSS-классов SVG/ссылок use или семантики вставок блоков DXF. SVG fill-rule сохраняется как метаданные источника, тогда как текущее преобразование составных контуров использует чётность вложенности. Неоднозначные компоновки намеренно отправляются в Geometry Review, а не угадываются. Автоматическая калькуляция площади графических слоёв и раскладка с учётом материала — будущая работа.