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
 * Дополнительная панель инструментов ограничения. Вы можете включить их, выбрав значок '...' на основной панели инструментов ограничения.


 * The Constraints tool bars will be the main interface used when assembling parts. They are greyed out by default but are activated once at least one face, line or point of a part is selected. Generally you select the Elements that should be joined and then select the constraint type. The different colored frames mark different characteristics of the constraints: whether 2D/3D of if more than 2 Elements can be added. A detailed description can be found in the Gibhub wiki.


 * Lock The very first constraint. In each assembly one part should be locked to act as base part. Locking mean nothing more than constraining this part in 6DOF to its current position and orientation. It becomes the sarting point for the


 * Assembly3_ToolbarNavigation.jpg
 * Navigation Toolbar
 * Theses functions are useful when working with an assembly with a hierarchy of linked external files
 * Select the corresponding part object in the relation group
 * Select linked object
 * Select the deepest linkes object


 * Assembly3_ToolbarMeasurement.jpg
 * Measurement Toolbar
 * The Measurement toolbar adds functions to measure distances between two points, a point and a line or a point and a face. The 'Measure Angle' tool tracks the angle between two faces or lines. There is not function to measure a radius or diameter.
 * The measurement tools survive part changes, e.g. the distance between edges of a cube when the cube is re-sized. As the constraints the calculations are done in real time and updated upon any change. Behind the scenes, the function is very similar to the constraints. The distance or angle is calculated between Elements in the same way as for constraints. The display in the tree works in the same way.

Как обычно, вы можете изменять панели инструментов и добавлять или удалять отдельные инструменты. Обязательно проверьте меню 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).


 * Create a new FreeCAD file
 * Select assembly Workbench. Select CreateAssembly (first icon)
 * Select Part Workbench and add a cylinder and a cube
 * Save the file with any filename you like. Close and open and the file.
 * The tree view should look like this


 * Now Draw&Drop with the mouse both Cylinder and Cube onto the Parts folder. They are moved into that folder.
 * That is the quickest way. Please note that a better way is to open the Context menu on both and select ContetxMenu/LinkActions/MakeLink. This adds two link files. Then Drag/Drop the link files to the Parts folder. For simple cases like this it does not really matter.
 * Click both top surfaces of Cylinder and Cube (keep Ctrl pressed)
 * Select assembly Workbench. Select "PlaceCoincident" from the Constraint Toolbar.
 * Now the parts should be joined into each other and your tree should look like this

We omitted one important step that should be done in larger assemblies: locking a base part. That means define one part that should not be moved by constraints. In your case we use the cube for that: Done. If you like you can move the "Locked" constraint upwards in the tree. Use the "MoveItemUp" button on the Main Toolbar for that.
 * Right click "_Element" (any of the two) and select "Flip Part".
 * Now the Cylinder should be on top of the box. If the whole thing is upside down, go back and select "Flip Part" on the other Element.
 * Select the lower face of the cube. Only the lower face, not the whole cube.
 * select the "Lock" constraint from the constraint tool bar
 * The finished assembly tree should look like in the image above

Note: all new external files must be saved, closed and re-opend at least once, so that Assembly3 can find it. Without doing that FreeCAD can not give a file handle to the Assembly3 Workbench and it can not find the new part. When all parts are in the same file, you should save and re-open the file.

top

Add an Offset
Assembly3 does not offer Offset with the constaints in the way the A2plus Workbench or other CAD tools do. Instead it offers a more general and flexible system to add offsets translations but also angles.


 * Add the offset in the properties of one Elements of a Constraint.
 * you can choose which one of the two you want to use.

Example:
 * Add 2 cubes to an assembly and select their side faces.
 * select "PlaneCoincident". The cubes will be attached inside each other.
 * select one Element and ContextMenu/Flip Part. The cubes will be attached side-by-side.
 * select one Element property Offset/Position/Zz and set to 5mm. The cubes will be 5mm apart.
 * Test with other axes or the angle/axis fields. Also verify that you get the same result when using the other Element.

This is the same approach for all other constraints.

top

Solve a Solver Failure
This often happens when parts are over-constraints, i.e. more than 6 DOF are locked.

The easiest way to find the problem is to click relevant constraints in the tree and select ContextMenu/Disable and re-calculate. It is helpful to know the last added constraints before the solver failed and just undo them.

Note: as Assembly3 tries to compensate for over-constraint parts behind the scenes, sometimes the problem is just triggered by a new constraint but the root cause is somewhere different. Before deleting all and starting again, remember that you can re-use Elements. If you named them you can identify the required elements and re-build the constraints without using the 3D view at all. See Elements seciton above.

top

Tips & Tricks

 * Using hierarchical assemblies helps in avoiding solver issues and keeping you model fluid. You can freeze a subassembly with one click and save CPU resources easily. Also note that Assembly3 does not need to keep external files for frozes subassemblies open. For large assemblies with large MB files this can be a severe advantage.
 * Using external files makes it easier to re-use a parts or do part versioning with systems like git or subversion. The workflow in FreeCAD with Assembly feels quite the same as with files that have all parts in the same file. For exchanging files often with other parties, single files might be more convenient.
 * Multiply linked parts. If you added a link into the assembly, it will have a property value named "Element Count", default 0. If you set this to 3 you get 3 instances of that part. They will be added into a subfolder and can be used like fully separte parts. Use this feature to keep the data footprint of your file low, because the part is saved only once. Each instance only contain the differences.
 * Insert multiple Screws with one click. Check out the Assembly3 Wiki on the Github site. This is not only a stunning function (even a bit magic), but really really useful.


 * Using the TabBar Workbench speeds up working with assembly. This adds a Toolbar with one button for each workbench. You can sort the toolbar and can put it where every you want it. Many people put it vertically on the left side just beside the tree view. Of you have Assembly3, Part, PartDesign and other often used workbenches close to the top switching between them becomes extremely easy.

top

Ссылки

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