Архітектура моделі документа
Модель документа - це хребет додатку, що представляє весь проект користувача як ієрархічне дерево об'єктів. Вона розроблена щоб бути реактивною, серіалізованою та легко прохідною.
Огляд
Архітектура побудована на Патерні Composite. Один
абстрактний базовий клас, DocItem, визначає загальний інтерфейс для всіх
об'єктів, які можуть існувати в дереві документа (наприклад, шари, деталі,
групи). Це дозволяє складним, вкладеним структурам оброблятися однорідно.
Ключові принципи моделі включають:
- Структура дерева: Об'єкт
Docслужить коренем дерева. Кожен елемент (окрім кореня) має одногоparentі може мати кількаchildren. - Реактивність: Модель використовує систему сигналів/слотів (
blinker). Коли елемент змінюється, він видає сигнал. Батьківські елементи слухають сигнали своїх нащадків і "піднімають їх вгору" по дереву. Це дозволяє високорівневим компонентам, якPipeline, слухати будь-яку зміну в документі, підключаючись до одного сигналу на кореневому об'єктіDoc. Система відстежує як зміни вмісту, так і зміни трансформації окремо для ефективних оновлень. - Ієрархія трансформацій: Кожен
DocItemмає локальну трансформаціюMatrix. Кінцева позиція, масштаб та обертання елемента у "світі" (головне полотно) є добутком його власної локальної матриці та світових матриць всіх його предків. - Роз'єднання даних: Візуальні або сирі дані для
WorkPieceне зберігаються безпосередньо в ньому. Замість цьогоWorkPieceмістить UID, що посилається на об'єк тImportSourceу центральному реєстрі наDoc. Це роз'єднує структуру документа від керування даними, роблячи модель більш легкою та гнучкою.
Успадкування класів
Ця діаграма показує ієрархію класів. Кожен об'єкт, що є частиною
просторового дерева документа, успадковується від абстрактного базового класу DocItem,
отримуючи основні функціональності як батьківство, трансформації та спливання
сигналів.
DocItem: Абстрактний фундамент, що забезпечує реалізацію патерну composite.- Всі інші класи є конкретними реалізаціями
DocItem, кожен з спеціалізованою роллю в структурі документа.
Композиція об'єктів
Ця діаграма ілюструє, як екземпляри класів зби раються щоб сформувати повний документ. Вона показує батьківсько-дочірні відносини та посилання між об'єктами.
Doc- це об'єкт верхнього рівня. Він містить один або кількаLayerтаStockItem. Він також керує реєстром всіхImportSourceу проекті.- Кожен
Layerмістить контент користувача:WorkPieceтаGroup. Важливо,Layerтакож володіє однимWorkflow. Workflowмістить впорядкований списокStep, які визначають виробничий процес для цього шару.Group- це контейнер, який може міститиWorkPieceта іншіGroup, дозволяючи вкладені трансформації.WorkPiece- це фундаментальний елемент дизайну. Він не зберігає свої сирі дані безпосередньо. Замість цього він посилається наImportSourceчерез UID. Він також має власнуGeometry(векторні дані) і може мати списокTab.
Описи DocItem
-
DocItem(Абстрактний)- Роль: Абстрактна база для всіх вузлів дерева.
- Ключові властивості:
uid,parent,children,matrix,updatedсигнал,transform_changedсигнал. Надає основну логіку патерну composite.
-
Doc- Роль: Корінь дерева документа.
- Ключові властивості:
children(Layers, StockItems),import_sources(словник, що відображає UID на об'єктиImportSource),active_layer.
-
Layer- Роль: Первинна організаційна одиниця для контенту. Шар асоціює групу деталей з одним виробничим робочим процесом.
- Ключові властивості:
children(WorkPieces, Groups, one Workflow),visible,stock_item_uid.
-
Group- Роль: Контейнер для інших
DocItem(WorkPiece,Group). Дозволяє колекції елементів трансформуватися як єдине ціле.
- Роль: Контейнер для інших
-
WorkPiece- Роль: Представляє окремий, матеріальний елемент дизайну на полотні (наприклад, імп ортований SVG).
- Ключові властивості:
vectors(об'єктGeometry),import_source_uid,tabs,tabs_enabled. Йогоvectorsнормалізовані до блоку 1x1, з усім масштабуванням та позиціонуванням, що обробляється його матрицею трансформації.
-
Workflow- Роль: Впорядкована послідовність інструкцій обробки. Належить
Layer. - Ключові властивості:
children(впорядкований списокStep).
- Роль: Впорядкована послідовність інструкцій обробки. Належить
-
Step- Роль: Окрема інструкція обробки в
Workflow(наприклад, "Contour Cut" або "Raster Engrave"). Це об'єкт конфігурації, що містить словники, які визначають продюсер, модифікатори та трансформери для використання.
- Роль: Окрема інструкція обробки в
-
StockItem- Роль: Представляє шматок фізичного матеріалу в документі,
визначений власною векторною
geometry.Layerможуть бути призначені до конкретного елемента заготовки.
- Роль: Представляє шматок фізичного матеріалу в документі,
визначений власною векторною