Здесь Вы можете посмотреть планы по разработке модуля Assembly как части общих Планов разработки.
Этот проект нацелен на реализацию возможностей монтажа и создания продукта. Он касается внедрения некоторых ключевых возможностей в модули Part и Assembly FreeCAD.
В этом месте этапы разработки планируются и отслеживаются в системе отслеживания ошибок, давая хорошо оформленный Changelog: Issue tracker
Цель проекта - сделать возможным выполнить на FreeCAD проектную задачу вроде этой:
Он получен, используя Assembly для составления различных видов деталей с ограничениями, оставаясь как можно ближе к спецификации ISO 10303 для лёгкого обмена моделями.
Другая цель - использование ODE для кинематики.
Ключевая способность для проектирования в реальном мире это возможность разбить проект на обозримые части. Невозможно работать над всеми аспектами проекта одновременно или в одиночку. Это возможно для геометрии и для инженерных задач вроде расчётов по МКЭ или технологического программирования. Поэтому FreeCAD должен иметь возможность разбивать модели. Это открывает следующие возможности:
Многомодельный проект должен выглядеть примерно так:
Многомодельность подразумевает множество файлов, относящихся к проекту, обычно в общем каталоге. Файл проекта и браузер проекта могут помощь с организацией файлов. Он так же может хранить дополнительную информацию о проекта или сайте проекта.
1. Два режима, "Simple" и "Project". В режиме Simple только один документ, содержащий все сборки и части. Если открыт или создан проект, FreeCAD в режиме Project.
2. Проекты. Расположение файла FCPrj на диске определяет корневой каталог. Все файлы под этим каталогом определены с путями относительно корневого каталога. Дополнительные виды слева поддерживают ProjectExplorer, показывающий древо каталога с поддерживаемыми файлами. Этот корневой каталог так же используется как корень для "песочинцы" SVN, что позволяет далее обмен и контроль версиями. Внешние ссылки (ниже каталогов вне корневого, общедоступного сервера или веб-ресурса) поддерживаются и показываются в ProjectExplorer отдельно (один псевдокаталог для каждого файлового или веб-сервера). Это позволит получить быстрый обзор внешних ссылок и обновить их.
Сейчас копирайт на на трёхмерные модели становится интересным вопросом. Трёхмерные модели попадают под авторское право. Авторские права получает создатель модели. Есть возможность защитить форму, представляемую моделью, патентом или патентом на дизайн (US). Но патент покрывает лишь создание физической детали для заработка. Примером служит Microsoft Mouse design patent.
Так что нам надо помнить создателя (держателя прав) и любой вид лицензий на каждую модель/продукт/файл проекта. Я буду использовать лицензии типа CC. http://creativecommons.org/
Ключевые аббревиатуры для лицензий CC:
В дополнение ссылка на полный текст документа лицензии (на случай пользовательских лицензий)
В этом плане очень важен ISO 10303 (STEP). Это единственное хорошо стандартизированное и широко обсуждавшееся, общепризнанное определение структуры продукта, которое я знаю.
Вот несколько ссылок на информацию:
Важная роль в построении больших моделей и продуктов имеют ограничения сборки, которые формулируют отдельные правила по сборке продукта. В основном это Fix, FaceToFace, Angle, Offset и некоторые виды создания шаблона. Эти ограничения требуют специализированного решателя для предохранения их при изменении деталей. Этот решатель фундаментально отличен от решателя в модуле Sketch. Полагаю, нам следует перейти на графическое представление этого...
Следующим шагом должно быть использование ODE или аналогичной библиотеки для соединения деталей и сборочных ограничений для кинематического моделирования машин. Это позволит заметить несоответствия и исследовать условия механической системы.
Важный момент это контроль версий и распределённое проектирование. С многомодельным проектированием мы можем разделить проект на малые части и распределить работу в команде. Для проектировщиков программ слова "распределённый" and "Версия" знакомы, поэтому почему бы не использовать DVCS. Сопоставление систем можно посмотреть здесь.
Поскольку мы имеем дело с большим набором данных, которые с трудом могут сравниваться, мы ограничены теми, которые используют модель сохранения моментальных снимков. Любая система, хранящая лишь изменения, будет иметь с нашими данными серьёзные проблемы (персонально проверялось с Mercurial и файлами Catia). После отбрасывания коммерческих и несвободных систем, для начала остались лишь Git и SVN.
Использование Git оставляет нам две неисследованными областями:
Но исопользование git должно открыть множество возможностей, даже больших, чем можно желать от систем PLM высокого класса...
Здесь некоторые проектные задачи, требуемые для достойного проектирования Assembly/Product:
Assembly потребует некоторые изменения в базовой системе и инфраструктурных слоях FreeCAD.
Многомодельность подразумевалась с самого начала проектирвоания FreeCAD. Благодаря этому у нас многодокументный интерфейс и возможность неограниченные документы. Но нам нужно специально усовершенствовать трёхмерный обозреватель для поддержки нескольких документов в его окне (Part-Trees).
Поскольку в Assembly основная работа идёт с сочетанием деталей и подсборок, должны быть созданы инструменты для складывания (группирования) деталей (Parts) в древе. В отличие от DocumentObjectGroup, группы Assembly должны работать с видимостью и положением дочерних элементов. Лучше всего складывать ViewProvider друг на друга. Это требует что-то вроде интерфейса ClaimChildren() для ViewProviders.
Интерфейс позволяет ViewProvider и Workbenches полный контроль над операциями Drag/Drop/Copy/Paste в древе проектов или окне трёхмерного вида.
Поддержка doped links (из внутренних или внешних). Подразумевает загрузку ресурсов через (потенциально) медленных соединений (http).
Описание материала и его свойств это жизненно важная часть систем CAD/CAE. Материалы имеют множество параметров и имён, сильно зависящих от используемых полей. Например, МКЭ и механическое проектирование имеют различные структуры и стандарты для описания материала.
Для описания материала создана специальная страница: Material
Дерево классов для работы с необходимыми концепциями. Ссылки, интерфейсы, ссылки на документы, виды, компаунды, ограничения, конфигурации и так далее...
Реализация первого импортёра STEP для более чем геометрии и цвета, чтобы проверять, содержит ли модель объекта более широкое применение.
Определить интерфейс для решателя ограничений сборки, похожий на интерфейс решателя в модуле Sketcher.
Интерфейс, позволяющий (внешней) программе (мульти)физической симуляции управлять положением деталей в сборке. Это позволит использовать "bullet" или "ODE" производить кинематические тесты и DMU.