Assembly3 Workbench/ru

Введение
Assembly3 это внешний верстак, используемый для выполнения сборок различных тел, содержащихся в едином файле или нескольких документах. Верстак Assembly3 основан на нескольких изменениях основных функций, сделанных для версии FreeCAD 0.19 (например, App Link), поэтому его нельзя использовать с более ранними версиями.

Основные особенности Assembly3 Workbench:
 * динамический/интерактивный решатель. Это означает, что вы можете перемещать детали с помощью мыши, в то время как решающая программа ограничивает движение. Это позволяет, например, подключить колесо к оси и вращать колесо интерактивно с помощью мыши.
 * ссылки. Это означает, что вы можете использовать одну единственную деталь, например винт несколько раз в сборке (в разных местах) без дублирования геометрии.
 * внешняя ссылка. Возможно иметь документ FreeCAD, который содержит только сборку, но не детали. Все части могут быть в отдельных файлах. Файлы могут быть даже в библиотеке или где-нибудь еще в файловой системе. Единственное требование - файл должен быть загружен при создании ссылки. После создания ссылки файл должен быть открыт для обновления ссылок, связанных с файлом. Assembly3 решает эту проблему, открывая файлы в фоновом режиме по мере необходимости.
 * иерархические сборки. Как и в реальной жизни, механический узел может состоять из узлов. Эта мощь снова состоит из подузлов и так далее.
 * остановка сборки. Поскольку ЦП может обрабатывать только определённое количество одновременных ограничений в реальном времени, замораживание сборки позволяет использовать ограничения даже для больших сборок. При замораживании готовых сборок или ограничений, которые не должны оставаться динамическими (например, сварные, болтовые или склеенные детали), они исключаются из расчётов обновления и считаются фиксированной геометрией решателем Assembly3.
 * Обратите внимание, что другие подходы предлагают другое решение этой проблемы, например Assembly4_workbench_icon.svg Assembly4 Workbench.

наверх

Панели инструментов
По состоянию на 2020 год верстак Assembly3 имеет следующие панели инструментов.


 * Assembly3_ToolbarMain.png
 * Main Toolbar


 * Главная панель инструментов содержит инструменты для
 * * добавления папки сборки
 * * импорта файлов STEP
 * * инструменты для перемещения деталей в 3D
 * * элементы управления внешним видом и решателем
 * * инструменты для сортировки элементов дерева


 * Assembly3_ToolbarConstraints_1.jpg
 * Главная панель инструментов ограничения. Некоторые инструменты это просто меню для дополнительных инструментов.


 * Assembly3_ToolbarConstraints_2.jpg
 * Дополнительная панель инструментов ограничения. Вы можете включить их, выбрав значок '...' на основной панели инструментов ограничения.


 * Constraints tool bars будут основным интерфейсом, используемым при сборке деталей. По умолчанию они неактивны, но активируются после выбора хотя бы одной грани, линии или точки детали. Обычно вы выбираете элементы, которые должны быть объединены, а затем выбираете тип ограничения. Рамки разного цвета обозначают разные характеристики ограничений: можно ли добавить 2D/3D или более двух элементов. Подробное описание можно найти в вики Gibhub.


 * Lock Самое первое ограничение. В каждой сборке одна деталь должна быть заблокирована, чтобы действовать как базовая деталь. Блокировка означает не что иное, как ограничение этой части в 6DOF ее текущим положением и ориентацией. Он становится отправной точкой для


 * Assembly3_ToolbarNavigation.jpg
 * Navigation Toolbar
 * Эти функции полезны при работе со сборкой с иерархией связанных внешних файлов.
 * * Выберите соответствующий объект детали в группе отношений
 * * Выберите связанный объект
 * * Выберите объект с самыми глубокими ссылками


 * Assembly3_ToolbarMeasurement.jpg
 * Measurement Toolbar
 * The Measurement toolbar добавляет функции для измерения расстояний между двумя точками, точкой и линией или точкой и гранью. Инструмент 'Measure Angle' отслеживает угол между двумя гранями или линиями. Нет функции измерения радиуса или диаметра.
 * Инструменты измерения выдерживают замену деталей, например расстояние между краями куба при изменении размера куба. Поскольку вычисления ограничений выполняются в реальном времени и обновляются при любых изменениях. За кулисами функция очень похожа на ограничения. Расстояние или угол между элементами рассчитывается таким же образом, как и для ограничений. Отображение в дереве работает аналогично.

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

наверх

Ограничения
Проектировщик использует ограничения для достижения желаемого результата по части связи двух частей. Искусство - это выбор правильных ограничений, которые лучше всего подходят для решения каждой проблемы. Каждая удалённая степень свободы теоретически должна устраняться только один раз между двумя объектами, но на практике со многими инструментами САПР выбранные ограничения создают комбинации избыточных ограничений, порой компенсируемые сложными алгоритмами, порой нет. Assembly3 действительно использует алгоритмы для обнаружения и компенсации избыточных ограничений, но очевидно, что они ещё не очень развиты. Таким образом, на практике для ограничений Assembly3 можно избежать проблем, зная, сколько степеней свободы (DOF) было использовано, а какие ещё должны быть заблокированы ограничениями. Никакая часть не должна иметь связи с ограничениями, превышающими 6DOF.


 * Примечание: Если решатель встречает комбинацию, которую невозможно разрешить, он выдаст ошибку. Решателю сложно выяснить, что вызвало проблему, поэтому, как правило, из данной ошибки не будет ясно, «где» проблема. В крупных сборках это может привести к сложному поиску проблем. К сожалению, нет простого способа избежать этого. Однако это подталкивает полностью осознавать как работает система (например, см. Elements ниже), использовать чёткие имена для всех задействованных компонентов и добавлять новые ограничения лишь когда решатель может разрешить текущую сборку. Очень полезной для отслеживания проблемы является функция «ContexMenu/Deactivate» у каждого ограничения.

Ограничения Assembly3 определяют ограничения в положении или ориентации между двумя элементами. Некоторые ограничения работают даже с более чем двумя Элементами. Элемент может быть гранью, линией, кромкой или точкой детали. Обычно ограничения определяются путем выбора желаемого элемента, а затем выбора ограничения панели инструментов Constraints.

Другое
 * Фиксируют 6 степеней свободы, оставляют 0:
 * Lock: ограничение блокировки фиксирует все степени свободы лица. Его следует использовать для одной базовой детали в каждой сборке. Вы также можете включить функцию MoveLock (на панели инструментов), чтобы деталь не могла быть перемещена случайно. Обычно не имеет значения, какую грань/линию/точку вы используете для фиксации детали. Также обратите внимание, что блокировка действительна только для прямой сборки, то есть в случае подсборки родительской сборке все равно потребуется заблокированная деталь сама по себе.
 * Attachment: Делает системы координат обоих элементов одинаковыми для всех осей. Это самая простая функция с точки зрения вычислений, и ее следует использовать везде, где это возможно. Обратите внимание, что вы можете использовать свойства элемента для компенсации смещений и углов, если два Элемента не идеально выровнены.
 * Фиксирует 5 степеней свободы, оставляет 1:
 * Plane Coincident: фиксирует Tx, Ty, Tz, Rx, Ry. Только Rz свободен. Остаётся вращение вокруг нормали, проходящей через «центр плоскости».
 * Фиксируют 4 степеней свободы, оставляют 2:
 * Axial Alignment: фиксирует Tx, Ty, Rx, Ry. Только Tz, Rz свободен. Остается вращение вокруг оси формы и перенос вдоль этой же оси. Два ограничения PointOnLine (при различных точках) дают тот же результат. Ограничение '‘Colinear'’ - тоже.
 * PointOnLine: Исключает сдвиг и вращение вдоль нормали к опорной линии. Допускаются только перемещение и вращение по оси линии.
 * Фиксируют 3 степени свободы, оставляют 3:
 * Same Orientation: фиксирует Rx, Rz, Rz. Все Т остаются свободными.
 * Points Coincident: фиксирует Tx, Ty, Tz. Все R остаются свободными.
 * PointOnPoint исключает 3 сдвига.
 * Plane Alignment: фиксирует Tz, Rx, Ry. Движение в плоскости и Rz. Это исключает смещение по нормали к базовой плоскости и два вращения вокруг осей этой плоскости.
 * Фиксируют 2 степени свободы, оставляют 4:
 * Multi Parallel: фиксирует Rx, Ry, все T и R остаются. Это исключает два вращения вокруг осей базовой плоскости.
 * Фиксируют 1 степень свободы, оставляют 5:
 * Points in Plane: фиксирует Tz. Это исключает смещение по нормали к базовой плоскости.
 * Points Distance: фиксирует расстояние между исходными точками элемента.
 * Это дает вам больше свободы, чем Points in Plane.
 * Points on Circle: фиксирует Tz и частично Tx, Ty. Замораживает перемещение точки (или нескольких точек) в области круга или диска. Вы должны выбрать круг вторым. Это оставляет все вращения свободными и даёт ограниченный сдвиг в базовой плоскости круга.

'': Примечание: В следующем списке Tx, Ty, Tz и Rx, Ry, Rz используются для описания перемещений и поворотов относительно опорных систем координат задействованных Элементов. Это не всегда точно или полностью определено, например когда задействована линия, не определяется, проходит ли она по X, Y или под любым углом между ними. Система используется для простоты и легкости сравнения взамен правильного, но более сложного определения. Таким образом, Z обычно является нормальным направлением всех задействованных граней. Пожалуйста, не стесняйтесь изменять это, используя лучший подход с улучшенной читаемостью.''

наверх

Элементы
Элементы это особый термин, используемый в верстаке Assembly 3. Понимание Элементов важно для понимания того, как следует использовать Assembly 3.

Полезно думать об элементе как об общем слове, обозначающем «выбираемый элемент» детали, то есть грань, ребро, круг, угол или другую точку. Элементы, которые вы выбираете для их ограничения, являются этими Элементами. В дереве папка Assembly имеет три подпапки. Рядом с 'Parts' и 'Constraints' есть папка 'Elements', которая пуста, пока не добавлены ограничения. При добавлении ограничения само ограничение получает два (или более) листа, это выбранные «Элементы». Также они добавляются в папку «Элементы», которая представляет собой просто список всех элементов, используемых в сборке. Рекомендуется изменить их имена (с помощью клавиши F2), особенно в больших сборках.

Давайте посмотрим пример
 * Создайте новый файл и добавьте куб и цилиндр из верстака Part. Уложим цилиндр на куб. Сначала фиксируем основание, куб в нашем случае. Выделите нижнюю грань куба и выберите ограничение "Locked" (первый значок в Ограничениях панели инструментов). Выберите верхнюю грань цилиндра и верхнюю грань куба. Затем выберите ограничение "Plane Conincident". Теперь цилиндр перемещен в куб, и в дереве в разделе 'Constrains' добавлен новый лист с двумя дочерними узлами. Кроме того, те же два дочерних узла были добавлены в 'Elements'. Если ваш цилиндр находится внутри куба, а не поверх куба, давайте сначала исправим это: выберите дочерний узел в разделе 'Constraints', который показывает грань цилиндра, и щелчком правой кнопкой мыши в контекстном меню выберите 'Flip Part'. Теперь цилиндр укладывается в коробку.

Главное, что нужно понять, - это то, что ограничение действует на ссылки на элементы в списке в папке дерева 'Elements'. Это позволяет сохранить структуру ограничений без изменений при замене деталей. Это очень сложно увидеть без примера.

Вернемся к примеру выше
 * Примечание: убедитесь, что вы добавили в куб ограничение "Locked", иначе это может сбивать с толку.
 * В окне САПР выберите другую грань куба. Теперь мы работаем только в древовидной структуре. Перейдите мышкой по дереву, в котором должен быть выбран куб. Перетащите кубик в папку 'Elements'. Перетащите его на имя 'Elements', а не где-нибудь еще в папке - причину мы увидим позже. Вы должны увидеть, что в список 'Elements' добавлен еще один элемент. Теперь выберите в папке 'Constraints' дочерний узел грани куба в ограничении "Plane Coincident" и удалите его. Ограничение покажет восклицательный знак, так как отсутствует один элемент. Обратите внимание, что, удалив элемент в ограничении, мы не удалили его в списке. Это потому, что в ограничении была только ссылка на элемент в списке. Теперь возьмите только что добавленный элемент в списке 'Elements' и перетащите его на ограничение "Plane Coincident". Теперь цилиндр переместится на другую выбранную грань. Нам может понадобиться снова выбрать в контекстном меню 'flip part', если цилиндр снова окажется внутри куба.

Пример показал, что, не удаляя ограничение, мы можем менять элементы, которые используются для ограничения. Таким же образом мы можем переместить цилиндр в совершенно другую часть. Поигравшись с этим примером еще немного, вы заметите некоторые дополнительные вещи, как
 * Если вы переименуете элемент в списке, имя будет изменено во всех ограничениях.
 * вы можете использовать один элемент в списке в нескольких ограничениях.
 * Вы можете использовать окно свойств элемента, чтобы добавить смещения. В примере это может перемещать цилиндр по грани куба.
 * вы можете использовать кнопку "Show Element Coordinate System" на главной панели инструментов, чтобы увидеть, что делают в контекстном меню 'Flip Part' и 'Flip Element'. Обязательно посмотрите, что происходит в окне свойств.
 * вы можете добавить ограничение в совершенно другом порядке: сначала добавьте несколько элементов в «Список элементов» (полезно наименование, например, «Верхняя грань куба» или «Лицевая грань куба»), затем добавьте ограничение, ничего не выбирая - это будет пустым ограничением. Затем перетащите элементы из списка «Элементы». Результат такой же, как и в первом примере. После выполнения этого упражнения должно быть ясно, как работают ограничения с элементами.
 * вы можете изменить существующее ограничение между существующими элементами, просто выбрав другой элемент в свойстве PropertyWindow/ConstraintType.

наверх

Совместимость
На Assembly3 повлиял Assembly2, но они не совместимы. Если у Вас есть старые модели, созданные в Assembly2, оставайтесь с FreeCAD 0.16 и используйте Assembly2 с ним.

Новые модели, разработанные с Assembly3, должны открываться и редактироваться с ним.

Несмотря на наличие похожих инструментов, Assembly3 не совместим ни с A2plus, ни с Assembly4. Модели, созданные в этих верстаках, должны открываться только своими верстаками.

наверх

Тестирование
Верстак Assembly3 ещё в стадии проектирования и пока (апрель 2020) не доступен через Addon Manager, но ожидается, что в какой-то момент это произойдёт.

Вы можете попробовать его двумя способами:
 * Отдельная ветка FreeCAD, сделанная realthunder; смотри выпуски FreeCAD_assembly3. Эта ветка базируется на конкретной точке главной ветки FreeCAD, но имеет дополнительные возможности, пока не присутствующие в главной ветке. Поскольку эта ветвь базируется на конкретном слепке с процесса разработки, в неё не попали позднейшие возможности, внедрённые позднее в главную ветку.
 * AppImage версии в разработке. Это базируется на текущей главной ветке, и включает зависимости, требуемые для работы с Assembly3, такие как вычислитель из SolveSpace.

Поскольку AppImage работает только для Linux, для Windows пользователи сейчас могут протестировать Assembly3 только по первому варианту (ветка realthunderа).

наверх

Начать
Есть много способов создать сборку с помощью Assembly3. Вот самый простой из возможных вариантов.


 * Assembly3_Example-GettingStarted.jpg
 * Окончательный результат примера «Начало работы». На изображении выбран верстак Assembly3, поэтому видно несколько его панелей инструментов. Обратите внимание, что вертикальная «TabBar» слева от древовидного представления - это верстак AddOn, который не содержится в стандартном FreeCAD (но может быть установлен с помощью Addon-Manager).


 * Создайте новый файл FreeCAD
 * Выберите Assembly Workbench. Выберите CreateAssembly (первый значок)
 * Выберите Part Workbench и добавьте цилиндр и куб
 * Сохраните файл с любым именем, которое вам нравится. Закройте и откройте и файл.
 * Древовидное представление должно выглядеть так


 * Теперь нарисуйте и перетащите мышью Cylinder и Cube в папку Parts. Они перемещаются в эту папку.
 * Это самый быстрый способ. Обратите внимание, что лучший способ - открыть контекстное меню на обоих и выбрать LinkActions → MakeLink. Это добавляет два файла ссылок. Затем перетащите файлы ссылок в папку Parts. Для таких простых случаев это не имеет значения.
 * Щелкните по обеим верхним поверхностям цилиндра и куба (удерживая Ctrl)
 * Выберите верстак Assembly. Выберите "PlaceCoincident" из инструментальной панели ограничений.
 * Теперь части должны быть соединены друг с другом, и ваше дерево должно выглядеть так

Мы пропустили один важный шаг, который должен выполняться в больших сборках: блокировка базовой детали. Это означает, что определите одну деталь, которую нельзя перемещать из-за ограничений. В вашем случае для этого мы используем куб: Готово. Если хотите, можете переместить ограничение "Locked" вверх по дереву. Для этого используйте кнопку "MoveItemUp" на главной панели инструментов.
 * Щелкните правой кнопкой мыши «_Element» (любой из двух) и выберите "Flip Part".
 * Теперь цилиндр должен быть наверху коробки. Если перевёрнуто всё, вернитесь и выберите "Flip Part" на другом элементе.
 * Выберите нижнюю грань куба. Только нижняя грань, а не весь куб.
 * выберите ограничение "Locked" на панели инструментов ограничения
 * Готовое дерево сборки должно выглядеть как на изображении выше

Заметьте: все новые внешние файлы должны быть сохранены, закрыты и повторно открыты как минимум один раз, чтобы Assembly3 могла их найти. Без этого FreeCAD не сможет передать дескриптор файла верстаку Assembly3 и он не сможет найти новую часть. Когда все части находятся в одном файле, вы должны сохранить и снова открыть файл.

наверх

Добавление смещения
Assembly3 не предлагает смещение с константами, как это делают верстак A2plus или другие инструменты САПР. Вместо этого он предлагает более общую и гибкую систему для добавления сдвигов, а также углов.


 * Добавьте смещение в свойствах одного Elements из Constraint.
 * вы можете выбрать любой из двух.

Пример:
 * Добавьте 2 куба в сборку и выберите их боковые грани.
 * выберите "PlaneCoincident". Кубики будут прикреплены друг к другу.
 * выберите один элемент и «Контекстное меню → Flip Part». Кубики будут прикреплены бок о бок.
 * выберите одно свойство элемента Offset/Position/Zz и установите значение 5 мм. Кубики будут находиться на расстоянии 5 мм друг от друга.
 * Проверьте с другими осями или полями углов/осей. Также убедитесь, что вы получаете тот же результат при использовании другого элемента.

Это тот же подход для всех других ограничений.

наверх

Устранение сбоя решателя
Это часто случается, когда детали чрезмерно ограничены, т.е. заблокировано более 6 степеней свободы.

Самый простой способ найти проблему - щелкнуть соответствующие ограничения в дереве и выбрать в контекстном меню Disable и произвести повторный расчёт. Полезно узнать последние добавленные ограничения перед отказом решателя и просто отменить их.

Примечание: поскольку Assembly3 пытается за кулисами скомпенсировать чрезмерно ограниченные части, иногда проблема просто запускается новым ограничением, но основная причина в другом. Прежде чем удалить все и начать заново, помните, что вы можете повторно использовать элементы. Если вы назвали их, вы можете определить необходимые элементы и заново построить ограничения, вообще не используя трехмерный вид. Смотрите раздел Элементы выше.

наверх

Советы и хитрости

 * Использование иерархических сборок помогает избежать проблем с решателем и сохранить плавность модели. Вы можете заморозить подсборку одним щелчком мыши и легко сэкономить ресурсы процессора. Также обратите внимание, что Assembly3 не нуждается в открытии внешних файлов для замороженных узлов. Для больших сборок с большими файлами MB это может быть серьезным преимуществом.
 * Использование внешних файлов упрощает повторное использование частей или управление версиями частей с помощью таких систем, как git или subversion. Рабочий процесс в FreeCAD со сборкой выглядит так же, как и с файлами, все части которых находятся в одном файле. Для частого обмена файлами с другими сторонами могут быть более удобными отдельные файлы.
 * Многосвязные части. Если вы добавили ссылку в сборку, у нее будет значение свойства с именем "Element Count", по умолчанию 0. Если вы установите это значение 3, вы получите 3 экземпляра этой детали. Они будут добавлены во вложенную папку и могут использоваться как полностью отдельные части. Используйте эту функцию, чтобы уменьшить объем данных вашего файла, потому что часть сохраняется только один раз. Каждый экземпляр содержит только различия.
 * Вставьте несколько винтов одним щелчком мыши. Посетите Assembly3 Wiki на сайте Github. Это не только потрясающая функция (даже немного волшебная), но и действительно полезная.


 * Использование верстак TabBar ускоряет работу со сборкой. Это добавляет панель инструментов с одной кнопкой для каждого рабочего места. Вы можете отсортировать панель инструментов и разместить ее где угодно. Многие люди помещают его вертикально слева, рядом с деревом. Если у вас есть Assembly3, Part, PartDesign и другие часто используемые рабочие места, расположенные ближе к верху, переключение между ними становится чрезвычайно простым.

наверх

Ссылки

 * Объект App Link, который обеспечивает работу Assembly3.
 * FreeCAD_assembly3 репозиторий и документация.
 * Обзор Assembly3, большая ветка обсуждения.
 * Пробный учебник для Assembly 3 WB от jpg87.
 * Текущий статус Assembly
 * Внешние верстаки
 * Список внешних верстаков
 * План разработки старого проекта Assembly, для знакомства с историей вопроса.