Assembly project/ru

Здесь Вы можете посмотреть планы по разработке модуля Assembly как части общих Планов разработки.

Задачи и принципы
Этот проект нацелен на реализацию возможностей монтажа и создания продукта. Он касается внедрения некоторых ключевых возможностей в модули Part и Assembly FreeCAD.

В этом месте этапы разработки планируются и отслеживаются в системе отслеживания ошибок, давая хорошо оформленный Changelog: Issue tracker

Результат
Цель проекта - сделать возможным выполнить на FreeCAD проектную задачу вроде этой:



Он получен, используя Assembly для составления различных видов деталей с ограничениями, оставаясь как можно ближе к спецификации ISO 10303 для лёгкого обмена моделями.

Другая цель - использование ODE для кинематики.

Многомодельность
Ключевая способность для проектирования в реальном мире это возможность разбить проект на обозримые части. Невозможно работать над всеми аспектами проекта одновременно или в одиночку. Это возможно для геометрии и для инженерных задач вроде расчётов по МКЭ или технологического программирования. Поэтому FreeCAD должен иметь возможность разбивать модели. Это открывает следующие возможности:
 * Задержанная загрузка - требуются лишь ресурсы вроде графики и основной памяти для элемента над которым Вы работаете.
 * параллельное проектирование - позволяет многим людям работать над одним и тем же проектом
 * Подробная система управления версиями - лучшее управление над различными аспектами проекта
 * И так далее....

Многомодельный проект должен выглядеть примерно так:

Управление проектом
Многомодельность подразумевает множество файлов, относящихся к проекту, обычно в общем каталоге. Файл проекта и браузер проекта могут помощь с организацией файлов. Он так же может хранить дополнительную информацию о проекта или сайте проекта.

1. Два режима, "Simple" и "Project". В режиме Simple только один документ, содержащий все сборки и части. Если открыт или создан проект, FreeCAD в режиме Project.

2. Проекты. Расположение файла FCPrj на диске определяет корневой каталог. Все файлы под этим каталогом определены с путями относительно корневого каталога. Дополнительные виды слева поддерживают ProjectExplorer, показывающий древо каталога с поддерживаемыми файлами. Этот корневой каталог так же используется как корень для "песочинцы" SVN, что позволяет далее обмен и контроль версиями. Внешние ссылки (ниже каталогов вне корневого, общедоступного сервера или веб-ресурса) поддерживаются и показываются в ProjectExplorer отдельно (один псевдокаталог для каждого файлового или веб-сервера). Это позволит получить быстрый обзор внешних ссылок и обновить их.

Copyright
Сейчас копирайт на на трёхмерные модели становится интересным вопросом. Трёхмерные модели попадают под авторское право. Авторские права получает создатель модели. Есть возможность защитить форму, представляемую моделью, патентом или патентом на дизайн (US). Но патент покрывает лишь создание физической детали для заработка. Примером служит Microsoft Mouse design patent.

Так что нам надо помнить создателя (держателя прав) и любой вид лицензий на каждую модель/продукт/файл проекта. Я буду использовать лицензии типа CC. http://creativecommons.org/

Ключевые аббревиатуры для лицензий CC:
 * BY = Attribution only
 * BY-ND = Attribution-NoDerivatives
 * BY-NC-ND = Attribution-NonCommercial- NoDerivatives
 * BY-NC = Attribution-NonCommercial
 * BY-NC-SA = Attribution-NonCommercial- ShareAlike
 * BY-SA = Attribution-ShareAlike
 * PD = Dedicated to or marked as being in the public domain via one of our public domain tools, or other public domain work; adaptations of works in the public domain may be built upon and licensed by the creator under any license terms desired

В дополнение ссылка на полный текст документа лицензии (на случай пользовательских лицензий)

ISO 10303
В этом плане очень важен ISO 10303 (STEP). Это единственное хорошо стандартизированное и широко обсуждавшееся, общепризнанное определение структуры продукта, которое я знаю.

Вот несколько ссылок на информацию:
 * ISO 10303 на Wikipedia
 * WikiStep.org с базовой информацией, но в основном про STEP-NC
 * Структура продукта в STEP
 * Некоторыепримеры STEP
 * ISO 10303-11 о языке моделирования EXPRESS
 * Статья в Wikipedia о моделировании продукта
 * Обзор Части 41 -- Основы Описания и Поддержки Продукта
 * Обзор Части 44 (редакция 2) -- Конфигурация Структуры Продукта
 * Примеры небольших файлов AP 214

Ограничения сборки
Важная роль в построении больших моделей и продуктов имеют ограничения сборки, которые формулируют отдельные правила по сборке продукта. В основном это Fix, FaceToFace, Angle, Offset и некоторые виды создания шаблона. Эти ограничения требуют специализированного решателя для предохранения их при изменении деталей. Этот решатель фундаментально отличен от решателя в модуле Sketch. Полагаю, нам следует перейти на графическое представление этого...

Кинематика
Следующим шагом должно быть использование ODE или аналогичной библиотеки для соединения деталей и сборочных ограничений для кинематического моделирования машин. Это позволит заметить несоответствия и исследовать условия механической системы.

Контроль версий
Важный момент это контроль версий и распределённое проектирование. С многомодельным проектированием мы можем разделить проект на малые части и распределить работу в команде. Для проектировщиков программ слова "распределённый" and "Версия" знакомы, поэтому почему бы не использовать DVCS. Сравнение различных систем можно посмотреть здесь.

Since we deal with big data, and data which can not be easily diffed, we are limited to those which use the snapshot persistence model. Any system storing just diffs will have grave problems with our data (personally tested with Mercurial and Catia files). After sorting out commercial and non-free, basically only Git and SVN remains.

Using Git for the task leaves us with two big frontiers: will put a lot of complexity in that matter. To hide it from the user will be a challenging task. documents and show and merge differences in the objects, features and parameters. Also not easy.
 * Git is very complicated; Branching merging and tagging along a non linear development path let alone merging with remote repositories (push, pull)
 * Git allow Merge and Diff handlers for certain file types; We need one for .fcstd. This handler has to examine two FreeCAD

But using git would open a lot of possibilities even high class PLM system would dream of...

Организация
Здесь некоторые проектные задачи, требуемые для достойного проектирования Assembly/Product:

Инфраструктура
Assembly потребует некоторые изменения в базовой системе и инфраструктурных слоях FreeCAD.

Многомодельность
Многомодельность подразумевалась с самого начала проектирвоания FreeCAD. Благодаря этому у нас многодокументный интерфейс и возможность неограниченные документы. Но нам нужно специально усовершенствовать трёхмерный обозреватель для поддержки нескольких документов в его окне (Part-Trees).

Part-Trees
Поскольку в Assembly основная работа идёт с сочетанием деталей и подсборок, должны быть созданы инструменты для складывания (группирования) деталей (Parts) в древе. В отличие от DocumentObjectGroup, группы Assembly должны работать с видимостью и положением дочерних элементов. Лучше всего складывать ViewProvider друг на друга. Это требует что-то вроде интерфейса ClaimChildren для ViewProviders.

Унифицированный интерфейс Drag/Drop/Copy/Paste
Интерфейс позволяет ViewProvider и Workbenches полный контроль над операциями Drag/Drop/Copy/Paste в древе проектов или окне трёхмерного вида.

Внешние ресурсы
Поддержка doped links (из внутренних или внешних). Подразумевает загрузку ресурсов через (потенциально) медленных соединений (http).

Материал
Описание материала и его свойств это жизненно важная часть систем CAD/CAE. Материалы имеют множество параметров и имён, сильно зависящих от используемых полей. Например, МКЭ и механическое проектирование имеют различные структуры и стандарты для описания материала.

Для описания материала создана специальная страница: Material

Объектная модель
Дерево классов для работы с необходимыми концепциями. Ссылки, интерфейсы, ссылки на документы, виды, компаунды, ограничения, конфигурации и так далее...

STEP check loop
Реализация первого импортёра STEP для более чем геометрии и цвета, чтобы проверять, содержит ли модель объекта более широкое применение.

Решатель ограничений сборки
Определить интерфейс для решателя ограничений сборки, похожий на интерфейс решателя в модуле Sketcher.

Интерфейс физической симуляции
Интерфейс, позволяющий (внешней) программе (мульти)физической симуляции управлять положением деталей в сборке. Это позволит использовать "bullet" или "ODE" производить кинематические тесты и DMU.

Следующие действия

 * Объектная модель
 * Ждать выпуска ветки 0.12

Учебник

 * Базовый учебник Assembly