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. Сопоставление систем можно посмотреть здесь.

Поскольку мы имеем дело с большим набором данных, которые с трудом могут сравниваться, мы ограничены теми, которые используют модель сохранения моментальных снимков. Любая система, хранящая лишь изменения, будет иметь с нашими данными серьёзные проблемы (персонально проверялось с Mercurial и файлами Catia). После отбрасывания коммерческих и несвободных систем, для начала остались лишь Git и SVN.

Использование Git оставляет нам две неисследованными областями:
 * Git очень сложен, ветвление, слияние и отметка вместе с нелинейным путём проектирования позволяет слияние с удалёнными хранилищами (push, pull) создаёт много сложностей в этом отношении. Сокрытие этого от пользователя будет серьёзной задачей.
 * Git предоставляет поддержку слияния и сравнения для некоторых типов файлов, нам требуется такая для .fcstd. Хандлер для этого должен будет проверить два документа FreeCAD и показать и слить различия в объектах, функциях и параметрах. Это тоже не просто.

Но исопользование git должно открыть множество возможностей, даже больших, чем можно желать от систем PLM высокого класса...

Организация
Здесь некоторые проектные задачи, требуемые для достойного проектирования 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