Архітектура імпортера
Цей документ описує архітектуру системи імпорту файлів Rayforge, яка обробляє конвертацію різних форматів файлів (SVG, DXF, PNG, PDF тощо.) в модель документа Rayforge.
Зміст
Огляд
Система імпорту побудована навколо чотирифазного конвеєра, який трансформує сирі файлові дані у повністю позиціоновані об'єкти документа. Кожна фаза має специфічну відповідальність і виробляє чітко визначені структури даних.
Конвеєр імпорту
Фаза 1: Парсинг
Метод: Importer.parse()
Витягує геометричні факти з файлу, включаючи межі, деталі системи координат та інформацію про шари.
Вивід: ParsingResult
document_bounds: Загальний розмір полотна у Нативних координатахnative_unit_to_mm: Коефіцієнт конвертації в мі ліметриis_y_down: Прапорець орієнтації осі Ylayers: СписокLayerGeometryworld_frame_of_reference: Світові координати (мм, Y-Up)background_world_transform: Матриця для позиціонування фонуuntrimmed_document_bounds: Довідник для Y-інверсії
Система координат:
document_bounds: Нативні координати (специфічні для файлу)world_frame_of_reference: Світові координати (мм, Y-Up)
Фаза 2: Векторизація
Метод: Importer.vectorize()
Конвертує пропарсені дані у векторні об'єкти Geometry відповідно до
VectorizationSpec.
Вивід: VectorizationResult
geometries_by_layer: Векторна геометрія на шар (Нативні координати)source_parse_result: Посилання на оригінальний ParsingResultfills_by_layer: Опціональна геометрія заливки (імпортер ескізів)
Система координат: Нативні координати (специфічні для файлу)
Фаза 3: Компонування
Клас: NormalizationEngine
Розраховує матриці трансформації для відображення Нативних координат у Світові координати на основі наміру користувача.
Вивід: List[LayoutItem]
Кожен LayoutItem містить:
world_matrix: Нормалізована (0-1, Y-Up) → Світ (мм, Y-Up)normalization_matrix: Нативна → Нормалізована (0-1, Y-Up)crop_window: Підмножина оригінального файлу в Нативних координатахlayer_id,layer_name: Ідентифікація шару
Система координат:
- Вхід: Нативні координати
- Вихід: Світові координати (мм, Y-Up) через проміжний Нормалізований простір
Фаза 4: Збирання
Клас: ItemAssembler
Інстанціює доменні об'єкти Rayforge (WorkPiece, Layer) на основі
плану компонування.
Вивід: ImportPayload
source:SourceAssetitems: СписокDocItemготовий для вставкиsketches: Опціональний список об'єктівSketch
Система координат: Всі DocItems у Світових координатах (мм, Y-Up)
Метод сканування
Метод: Importer.scan()
Легковесне сканування, яке витягує метадані без повної обробки. Використовується для
побудови UI для імпортера, включаючи список вибору шарів.
Це НЕ є частиною основного конвеєра імпорту, що виконується get_doc_items().
Вивід: ImportManifest
layers: Список об'єктівLayerInfonatural_size_mm: Фізичні розміри в міліметрах (Y-Up)title: Опціональна назва документаwarnings,errors: Некритичні виявлені проблеми
Система координат: Світові координати (мм, Y-Up) для natural_size_mm