Assembly3 Workbench/ru

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

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

наверх

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



Основная панель инструментов

 * [[Image:Assembly_New_Assembly.svg‎‎|28px]] [[Image:Assembly_New_Group.svg‎‎|28px]] [[Image:Assembly_New_Element.svg‎‎|28px]] [[Image:Assembly_Import.svg‎‎|28px]][[Image:AngleDown.svg‎‎|14px]][[Image:Assembly3_workbench_icon.svg‎‎|28px]] [[Image:Assembly_QuickSolve.svg‎‎|28px]] [[Image:Assembly_Move.svg‎‎|28px]] [[Image:Assembly_AxialMove.svg‎‎|28px]] [[Image:Assembly_QuickMove.svg‎‎|28px]] [[Image:Assembly_LockMover.svg‎‎|28px]] [[Image:Assembly_TogglePartVisibility.svg‎‎|28px]] [[Image:Assembly_Trace.svg‎‎|28px]] [[Image:Assembly_AutoRecompute.svg‎‎|28px]] [[Image:Assembly_SmartRecompute.svg‎‎|28px]] [[Image:Assembly_AutoFixElement.svg‎‎|28px]] [[Image:Assembly_AutoElementVis.svg‎‎|28px]][[Image:AngleDown.svg‎‎|14px]][[Image:Assembly_Add_Workplane.svg‎‎|28px]][[Image:AngleDown.svg‎‎|14px]][[Image:Assembly_TreeItemUp.svg‎‎|28px]] [[Image:Assembly_TreeItemDown.svg‎‎|28px]] [[Image:Assembly_ConstraintMultiply.svg‎‎|28px]]


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


 * [[Image:Assembly_New_Assembly.svg‎‎|32px]] Create assembly: Добавить папку сборки
 * [[Image:Assembly_New_Group.svg‎‎|32px]] Group objects: Группировать объекты
 * [[Image:Assembly_New_Element.svg‎‎|32px]] Create element: Создать элемент.
 * Импорт из STEP. Имеет две установки
 * [[Image:Assembly_Import.svg‎‎|32px]] Import from STEP: Импорт STEP-файлов
 * [[Image:Assembly_ImportMulti.svg‎‎|32px]] Import as multi-document: Импорт сборок из STEP в отдельные документы
 * [[Image:Assembly3_workbench_icon.svg‎‎|32px]] Resolve constraints: Разрешить ограничения
 * [[Image:Assembly_QuickSolve.svg‎‎|32px]] Quick solve: Быстрое разрешение ограничений
 * [[Image:Assembly_Move.svg‎‎|32px]] Move part: Перемещение деталей в 3D, это специфично для Assembly3
 * [[Image:Assembly_AxialMove.svg‎‎|32px]] Axial move: Axial move parts in 3D, это классический инструмент, доступный в любом месте FreeCAD.
 * [[Image:Assembly_QuickMove.svg‎‎|32px]] Быстрое перемещение: При этом выделенная в дереве часть будет прикреплена к курсору мыши. Она изменит положение детали при щелчке мышью.
 * Часто добавляемые части накладываются друг на друга в начале координат. Используйте эту функцию, чтобы захватить деталь, которую вы не видите.
 * [[Image:Assembly_LockMover.svg‎‎|32px]] Lock mover: Блокировка перемещения зафиксированных частей. Переключаемая кнопка. Когда эта кнопка не нажата, можно перемещать части, которые имеют ограничение "Locked".
 * [[Image:Assembly_TogglePartVisibility.svg‎‎|32px]] Переключатель видимости: Переключает видимость выделенной части.
 * Обратите внимание, что это отличается использование пробела. Использование пробела для выделенных элементов из подразделов в 3D-виде часто ведет себя не так, как ожидалось. Используйте эту функцию в этих случаях (или сочетание A-Space).
 * [[Image:Assembly_Trace.svg‎‎|32px]] Trace part move: Отслеживание перемещения детали (TBD)
 * [[Image:Assembly_AutoRecompute.svg‎‎|32px]] Auto recompute: Автопересчет. Обычно включено.
 * Может быть не включено при ремонте ограничений или исправлении деталей, когда решатель выдает сообщение "не сходятся" (например, поворачивая деталь на 180 градусов).
 * [[Image:Assembly_SmartRecompute.svg‎‎|32px]] Smart recompute: Умный пересчёт. Обычно включено.
 * [[Image:Assembly_AutoFixElement.svg‎‎|32px]] Auto fix element: Автоматическое исправление элементов. Экспериментальная возможность в 0.19_pre
 * Стиль элемента. Имеет две настройки
 * [[Image:Assembly_AutoElementVis.svg‎‎|32px]] Auto element visibility: Автоматическая видимость элемента.
 * [[Image:Assembly_ShowElementCS.svg‎‎|32px]] Show element coordinate system: Показать систему координат элемента.
 * Рабочая плоскость и начала координат. Добавляет рабочую плоскость, размещение или начало координат. Должна быть выбрана деталь. Имеет пять установок
 * [[Image:Assembly_Add_Workplane.svg‎‎|32px]] Add workplane: добавить рабочую область
 * [[Image:Assembly_Add_WorkplaneXZ.svg‎‎|32px]] Add XZ workplane: добавить XZ область
 * [[Image:Assembly_Add_WorkplaneZY.svg‎‎|32px]] Add ZY workplane: Добавить YZ область
 * [[Image:Assembly_Add_Placement.svg‎‎|32px]] Add placement: добавить Размещение
 * [[Image:Assembly_Add_Origin.svg‎‎|32px]] Add Origin: добавить Начало координат
 * [[Image:Assembly_TreeItemUp.svg‎‎|32px]] Move item up: MПереместить выбранный элемент дерева вверх
 * [[Image:Assembly_TreeItemDown.svg‎‎|32px]] Move item down: Переместите выбранный элемент дерева вниз
 * Позволяет сортировать Детали, Элементы или Ограничения в древе. Сворачивает элемент (сверху вниз и наоборот). Работает лишь при единичном выборе.
 * [[Image:Assembly_ConstraintMultiply.svg‎‎|32px]] Multiply constraint: Множественное Ограничение. Это может быть выбрано, если присутствует несколько частей и подходящих Элементов.
 * Используется, например, для назначения нескольких креплений одного типа в несколько отверстий с одним ограничением.



Панель основных ограничений

 * [[Image:Assembly_ConstraintLock.svg‎‎|28px]] [[Image:Assembly_ConstraintAlignment.svg‎‎|28px]] [[Image:Assembly_ConstraintCoincidence.svg‎‎|28px]] [[Image:Assembly_ConstraintAttachment.svg‎‎|28px]][[Image:AngleDown.svg‎‎|14px]][[Image:Assembly_ConstraintAxial.svg‎‎|28px]] [[Image:Assembly_ConstraintSameOrientation.svg‎‎|28px]] [[Image:Assembly_ConstraintMultiParallel.svg‎‎|28px]] [[Image:Assembly_ConstraintAngle.svg‎‎|28px]] [[Image:Assembly_ConstraintPerpendicular.svg‎‎|28px]] [[Image:Assembly_ConstraintPointCoincident.svg‎‎|28px]] [[Image:Assembly_ConstraintPointInPlane.svg‎‎|28px]] [[Image:Assembly_ConstraintPointOnLine.svg‎‎|28px]] [[Image:Assembly_ConstraintPointOnCircle.svg‎‎|28px]] [[Image:Assembly_ConstraintPointsDistance.svg‎‎|28px]] [[Image:Assembly_ConstraintPointPlaneDistance.svg‎‎|28px]] [[Image:Assembly_ConstraintPointLineDistance.svg‎‎|28px]] [[Image:Assembly_ConstraintSymmetric.svg‎‎|28px]] [[Image:Assembly_ConstraintMore.svg‎‎|28px]]


 * Некоторые инструменты на деле представляют собой меню для дополнительных инструментов.


 * [[Image:Assembly_ConstraintLock.svg‎‎|32px]] Locked: Добавьте ограничение "Locked", чтобы зафиксировать одну или несколько частей.
 * Вам нужно выбрать элемент геометрии детали.
 * Если вы фиксируете вершину или ребро, деталь по-прежнему может свободно вращаться вокруг вершины или ребра.
 * Фиксация грани полностью заблокирует деталь.
 * [[Image:Assembly_ConstraintAlignment.svg‎‎|32px]] Plane Alignment: Добавьте ограничение "Plane alignment", чтобы выровнять плоские грани двух или более деталей.
 * Грани становятся копланарными или параллельными с возможной дистанцией.
 * [[Image:Assembly_ConstraintCoincidence.svg‎‎|32px]] Plane Coincidence: Добавьте ограничение "Plane coincidence", чтобы совместить плоские грани двух или более деталей.
 * Грани совпадут в своих центрах с возможной дистанцией.
 * Attachment имеет две настройки
 * [[Image:Assembly_ConstraintAttachment.svg‎‎|32px]] Attachment: Добавьте ограничение "Attachment", чтобы прикрепить две детали с выбранными элементами геометрии.
 * Это ограничение полностью фиксирует детали относительно друг друга.
 * [[Image:Assembly_ConstraintAttachmentOffset.svg‎‎|32px]] AttachmentOffset: То же, что и ограничение "Attachment", но с сохранением текущего относительного размещения задействованных частей путем установки смещения элемента.
 * Это ограничение полностью фиксирует детали относительно друг друга.
 * [[Image:Assembly_ConstraintAxial.svg‎‎|32px]] Axial Alignment: Добавьте ограничение "Axial alignment" для выравнивания ребер/граней двух или более деталей.
 * ограничение принимает
 * линейные ребра, которые становятся коллинеарными,
 * плоские грани, которые выровнены по оси нормали к поверхности,
 * и цилиндрическая грань, которые выровнены по осевому направлению.
 * Можно смешивать различные типы геометрических элементов.
 * [[Image:Assembly_ConstraintSameOrientation.svg‎‎|32px]] Same orientation: Добавьте ограничение "Same orientation", чтобы выровнять грани двух или более деталей.
 * Плоскости выровнены, чтобы иметь одинаковую ориентацию (т.е. вращение)
 * [[Image:Assembly_ConstraintMultiParallel.svg‎‎|32px]] Multi parallel: Добавьте зависимость "Multi parallel", чтобы сделать плоские грани или линейные ребра двух или более деталей параллельными.
 * [[Image:Assembly_ConstraintAngle.svg‎‎|32px]] Angle: Добавьте ограничение "Angle", чтобы задать угол между плоскими гранями или линейными ребрами двух деталей.
 * [[Image:Assembly_ConstraintPerpendicular.svg‎‎|32px]] Perpendicular: Добавьте ограничение "Perpendicular", чтобы сделать плоские грани или линейные ребра двух деталей перпендикулярными.
 * [[Image:Assembly_ConstraintPointCoincident.svg‎‎|32px]] Points coincident: Добавьте ограничение "Point coincident", чтобы совместить две точки в 2D или 3D.
 * [[Image:Assembly_ConstraintPointInPlane.svg‎‎|32px]] Point on plane: Добавьте "Point on plane", чтобы ограничить одну или несколько точек плоскостью.
 * [[Image:Assembly_ConstraintPointOnLine.svg‎‎|32px]] Point on line: Добавьте "Point on line", чтобы ограничить точку линией в 2D или 3D.
 * [[Image:Assembly_ConstraintPointOnCircle.svg‎‎|32px]] Point on circle: Добавьте "Point on circle", чтобы ограничить одну или несколько точек цилиндрической поверхностью, заданной окружностью.
 * Обратите внимание, что вы должны выбрать точку (любой элемент геометрии может определить точку), а затем выбрать окружность (или цилиндрическую поверхность),
 * после чего вы можете добавить дополнительные точки к вашему выбору, если надо.
 * [[Image:Assembly_ConstraintPointsDistance.svg‎‎|32px]] Points distance: Добавьте "Points distance", чтобы ограничить расстояние между двумя или более точками.
 * [[Image:Assembly_ConstraintPointPlaneDistance.svg‎‎|32px]] Point plane distance: Добавьте "Point plane distance", чтобы ограничить расстояние между одной или несколькими точками и плоскостью.
 * [[Image:Assembly_ConstraintPointLineDistance.svg‎‎|32px]] Point line distance: Добавьте "Point line distance" чтобы ограничить расстояние между точкой и линейным ребром в 2D или 3D.
 * [[Image:Assembly_ConstraintSymmetric.svg‎‎|32px]] Symmetric: Добавьте зависимость "Symmetric", чтобы сделать элементы геометрии двух деталей симметричными относительно плоскости.
 * Поддерживаемые элементы: линейная кромка и плоская грань.
 * [[Image:Assembly_ConstraintMore.svg‎‎|32px]] More: Включение дополнительных панелей инструментов ограничений
 * На деле не ограничение, а тумблер для отображения/скрытия Additional Constraints Toolbars.



Панель дополнительных ограничений

 * [[Image:Assembly_ConstraintPointDistance.svg‎‎|28px]] [[Image:Assembly_ConstraintEqualAngle.svg‎‎|28px]] [[Image:Assembly_ConstraintPointsSymmetric.svg‎‎|28px]] [[Image:Assembly_ConstraintGeneral.svg‎‎|28px]] [[Image:Assembly_ConstraintGeneral.svg‎‎|28px]] [[Image:Assembly_ConstraintSymmetricLine.svg‎‎|28px]] [[Image:Assembly_ConstraintPointsHorizontal.svg‎‎|28px]] [[Image:Assembly_ConstraintPointsVertical.svg‎‎|28px]] [[Image:Assembly_ConstraintLineHorizontal.svg‎‎|28px]] [[Image:Assembly_ConstraintLineVertical.svg‎‎|28px]] [[Image:Assembly_ConstraintArcLineTangent.svg‎‎|28px]] (Assembly3 Constraints2)


 * [[Image:Assembly_ConstraintSketchPlane.svg‎‎|28px]] [[Image:Assembly_ConstraintLineLength.svg‎‎|28px]] [[Image:Assembly_ConstraintEqualLength.svg‎‎|28px]] [[Image:Assembly_ConstraintLengthRatio.svg‎‎|28px]] [[Image:Assembly_ConstraintLengthDifference.svg‎‎|28px]] [[Image:Assembly_ConstraintLengthEqualPointLineDistance.svg‎‎|28px]] [[Image:Assembly ConstraintEqualLineArcLength.svg‎‎|28px]] [[Image:Assembly_ConstraintMidPoint.svg‎‎|28px]] [[Image:Assembly_ConstraintDiameter.svg‎‎|28px]] [[Image:Assembly_ConstraintEqualRadius.svg‎‎|28px]] [[Image:Assembly_ConstraintPointsProjectDistance.svg‎‎|28px]] [[Image:Assembly_ConstraintEqualPointLineDistance.svg‎‎|28px]] [[Image:Assembly_ConstraintColinear.svg‎‎|28px]] (Assembly3 Sketch Constraints)


 * Их можно включить, нажав кнопку на панели инструментов «Основные ограничения».


 * [[Image:Assembly_ConstraintPointDistance.svg‎‎|32px]] Point distance: Добавьте "Point distance", чтобы ограничить расстояние между двумя точками в 2D или 3D.
 * [[Image:Assembly_ConstraintEqualAngle.svg‎‎|32px]] Equal angle: Добавьте "Equal angle", чтобы приравнять углы между двумя линиями или нормалями.
 * [[Image:Assembly_ConstraintPointsSymmetric.svg‎‎|32px]] Points symmetric: Добавьте ограничение "Points symmetric" чтобы сделать две точки симметричными относительно плоскости.
 * [[Image:Assembly_ConstraintGeneral.svg‎‎|32px]] Symmetric horizontal: Symmetric horizontal
 * [[Image:Assembly_ConstraintGeneral.svg‎‎|32px]] Symmetric vertical: Symmetric vertical
 * [[Image:Assembly_ConstraintSymmetricLine.svg‎‎|32px]] Symmetric line: Добавьте ограничение "Symmetric line" чтобы сделать две точки симметричными относительно линии.
 * [[Image:Assembly_ConstraintPointsHorizontal.svg‎‎|32px]] Points horizontal: Add a "Points horizontal" constraint to make two points horizontal with each other when projected onto a plane.
 * [[Image:Assembly_ConstraintPointsVertical.svg‎‎|32px]] Points vertical: Добавьте ограничение "Points vertical" чтобы сделать две точки горизонтальными относительно друг друга при проецировании на плоскость.
 * [[Image:Assembly_ConstraintLineHorizontal.svg‎‎|32px]] Line horizontal: Добавьте ограничение "Line horizontal" чтобы сделать сегмент линии горизонтальным в проекции на плоскость.
 * [[Image:Assembly_ConstraintLineVertical.svg‎‎|32px]] Line vertical: Добавьте ограничение "Line vertical" чтобы сделать сегмент линии вертикальным при проецировании на плоскость.
 * [[Image:Assembly_ConstraintArcLineTangent.svg‎‎|32px]] Arc line tangent: Добавьте зависимость "Arc line tangent" чтобы сделать линию касательной к дуге в начальной или конечной точке дуги.


 * [[Image:Assembly_ConstraintSketchPlane.svg‎‎|32px]] Sketch plane: Добавьте "Sketch plane" (плоскость эскиза), чтобы определить рабочую плоскость любого элемента уклона внутри или после этого ограничения.
 * Добавьте пустую "плоскость эскиза", чтобы отменить определение предыдущей рабочей плоскости.
 * [[Image:Assembly_ConstraintLineLength.svg‎‎|32px]] Line length: Добавление ограничения "Line length", определяющего длину неразделенного объекта Draft.Wire.
 * [[Image:Assembly_ConstraintEqualLength.svg‎‎|32px]] Equal length: Добавьте ограничение "Equal length" (равная длина), чтобы сделать две линии одной длины.
 * [[Image:Assembly_ConstraintLengthRatio.svg‎‎|32px]] Length ratio: Добавьте "Length ratio" чтобы ограничить соотношение длины двух линий.
 * [[Image:Assembly_ConstraintLengthDifference.svg‎‎|32px]] Length difference: Добавьте "Length difference" чтобы ограничить по разности длины двух линий.
 * [[Image:Assembly_ConstraintLengthEqualPointLineDistance.svg‎‎|32px]] Length Equal Point Line Distance: Добавьте "Length Equal Point Line Distance" для ограничения дистанции
 * между точкой и линией той же величиной, что длина другой линии.
 * [[Image:Assembly_ConstraintGeneral.svg‎‎|32px]] ( [[Image:Assembly ConstraintEqualLineArcLength.svg‎‎|32px]] )Equal Line Arc Length: Добавьте ограничение "Equal Line Arc Length", чтобы сделать длину линии равной длине дуги.
 * [[Image:Assembly_ConstraintMidPoint.svg‎‎|32px]] Mid point: Добавьте ограничение "Mid point" чтобы установить положение точки в середине линии.
 * [[Image:Assembly_ConstraintDiameter.svg‎‎|32px]] Diameter: Добавьте "Diameter" чтобы ограничить диаметр окружности/дуги.
 * [[Image:Assembly_ConstraintEqualRadius.svg‎‎|32px]] Equal radius: Добавьте ограничение "Equal radius" чтобы сделать равным радиусы двух окружностей/дуг.
 * [[Image:Assembly_ConstraintPointsProjectDistance.svg‎‎|32px]] Points project distance: Добавьте "Points project distance" чтобы ограничить спроецированное на линию расстояние между точками.
 * [[Image:Assembly_ConstraintEqualPointLineDistance.svg‎‎|32px]] Equal point line distance: Добавьте "Equal point line distance" чтобы ограничить дистанцию
 * между точкой и линией равной дистанции между другой точкой и линией.
 * [[Image:Assembly_ConstraintColinear.svg‎‎|32px]] Colinear: Добавьте ограничение "Colinear" чтобы сделать две линии коллинеарными.


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



Панель Навигации

 * [[Image:Assembly_GotoRelation.svg‎‎|28px]] [[Image:LinkSelect.svg‎‎|28px]] [[Image:LinkSelectFinal.svg‎‎|28px]]


 * Эти функции полезны при работе со сборкой с иерархией связанных внешних файлов.


 * [[Image:Assembly_GotoRelation.svg‎‎|32px]] Go to relation: Открывает группу отношений (по умолчанию скрыта) и выбирает объект отношения.
 * Std_LinkSelectLinked.svg Select linked object: Выбирает связанный объект и переключается на его документ.
 * Std_LinkSelectLinkedFinal.svg Select linked final: Выбирает объект с самыми глубокими ссылками и переключается на его документ.



Панель Measurement

 * [[Image:Assembly_MeasurePointDistance.svg‎‎|28px]] [[Image:Assembly_MeasurePointLineDistance.svg‎‎|28px]] [[Image:Assembly_MeasurePointPlaneDistance.svg‎‎|28px]] [[Image:Assembly_MeasureAngle.svg‎‎|28px]]


 * Панель Measurement добавляет функции для измерения расстояний между двумя объектами.


 * [[Image:Assembly_MeasurePointDistance.svg‎‎|32px]] Measure points: Добавьте "Measure points" для измерения расстояния между двумя точками в 2D или 3D.
 * [[Image:Assembly_MeasurePointLineDistance.svg‎‎|32px]] Measure point to line: Добавьте "Measure point to line" для измерения расстояния между точкой и линейным ребром в 2D или 3D.
 * [[Image:Assembly_MeasurePointPlaneDistance.svg‎‎|32px]] Measure point to plane: Добавьте "Measure point to plane" для измерения угла между точкой и плоскостью.
 * [[Image:Assembly_MeasureAngle.svg‎‎|32px]] Measure angle: Добавьте "Measure angle" для измерения угла между плоскими гранями или линейными рёбрами двух разных деталей.


 * Функции измерения радиуса или диаметра нет..
 * Инструменты измерения выдерживают замену деталей, например расстояние между краями куба при изменении размера куба.
 * Поскольку вычисления ограничений выполняются в реальном времени и обновляются при любых изменениях. За кулисами функция очень похожа на ограничения. Расстояние или угол между элементами рассчитывается таким же образом, как и для ограничений. Отображение в дереве работает аналогично.

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

наверх

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


 * Примечание: Если решатель встречает комбинацию, которую невозможно разрешить, он выдаст ошибку. Решателю сложно выяснить, что вызвало проблему, поэтому, как правило, из данной ошибки не будет ясно, «где» проблема. В крупных сборках это может привести к сложному поиску проблем. К сожалению, нет простого способа избежать этого. Однако это подталкивает полностью осознавать как работает система (например, см. 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 (движение в плоскости). Это исключает смещение по нормали к базовой плоскости и два вращения вокруг осей этой плоскости.
 * Фиксируют 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" (первая иконка в Constraints toolbar). Выберите верхнюю сторону цилиндра и верхнюю сторону куба. Затем выберите ограничение "Совпадение плоскостей" ("Plane Coincident"). Теперь цилиндр переместится в куб и в дереве в разделе 'Constraints' ("Ограничения") будет добавлен новый елемент с двумя дочерними узлами. Дополнительно те же самые два дочерних узла будут добавлены в разделе '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 (по состоянию на март 2022) доступен через Менеджер Дополнений. Все внешние зависимости Assembly3 должны разрешаться автоматически через Менеджер Дополнений.



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

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

наверх

Как...


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


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


 * Press для создания нового файла FreeCAD
 * Выберите верстак [[Image:Assembly3_workbench_icon.svg|16px]] Assembly3.
 * Выберите
 * Перейдите на верстак [[Image:Workbench_Part.svg|16px]] Part добавьте [[Image:Part_Cylinder.svg|16px]] Cylinder и [[Image:Part_Box.svg|16px]] Cube
 * [[Image:Std_Save.svg|16px]] Сохраните файл с любым именем, которое вам нравится. [[Image:Std_CloseActiveWindow.svg|16px]] Закройте and [[Image:Std_Open.svg|16px]] откройте файл снова.

Древовидное представление должно выглядеть так (0.20.pre и Link Branch):




 * Теперь перетащите мышью Cylinder и Cube на папку Parts. Они переместятся внутрь.
 * Это самый быстрый способ, подходящий для простых случаев вроде этого. Лучше использовать объект link:
 * Выбрать Cube и Cylinder и затем или через Context menu (-> LinkActions -> MakeLink) или через панель Structure.
 * Это добавляет два объекта ссылок. Затем перетащите объекты ссылок в папку Parts.
 * Щелкните по обеим верхним поверхностям цилиндра и куба (удерживая Ctrl, или Cmd на Mac)
 * Выберите верстак [[Image:Assembly3_workbench_icon.svg|16px]] Assembly3.
 * Выберите из Main constraints toolbar.

Теперь части должны быть соединены друг с другом, и ваше дерево должно выглядеть примерно так (0.20.pre и Link Branch):




 * Щелкните правой кнопкой мыши _Element (любой из двух) и выберите "Flip Part".


 * Теперь цилиндр должен быть наверху коробки. Если перевёрнуто всё, вернитесь и выберите "Flip Part" на другом элементе.
 * Мы пропустили один важный шаг, который должен выполняться в больших сборках: блокировка базовой детали.
 * Это означает, что нужно определить одну деталь, которую нельзя будет перемещать по ограничениям. В вашем случае для этого мы используем куб:
 * Выберите нижнюю грань куба. Только нижняя грань, а не весь куб.
 * выберите ограничение  на  панели инструментов ограничения

Готово.

Готовое дерево сборки должно выглядеть примерно как (0.20.pre и Link Branch):



Если хотите, можете переместить ограничение Locked вверх по дереву. Для этого используйте кнопку  на главной  панели инструментов.

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

наверх



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


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

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

Для других Ограничений применяется аналогичный подход.

наверх



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

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

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

наверх



Заменить деталь или переименовать файл
Когда деталь удаляется или изменяется имя файла, сборка ломается, ее нельзя решить, и решатель выдаст сообщение "Inconsistent constraints" («Несогласованные ограничения»). Решатель помечает недопустимые элементы и ограничения в дереве знаком вопроса.

Один из способов решить эту проблему - просто удалить все недопустимые ограничения и элементы, импортировать новую часть и все повторить. Но есть способ лучше:


 * Переименуйте файл
 * Используя файловый менеджер скопируйте файл, который хотите переименовать. Затем дайте копии новое имя.
 * Откройте копию в FreeCAD. Сборка и старый файл тоже должны быть открыты
 * Выберите старый объект в дереве и нажмите на поле для изменения свойства "Linked object" («Связанный объект») (оно должно содержать старое имя файла)
 * Откроется диалоговое окно со списком всех открытых деталей. Он показывает имена файлов и объекты каждой детали. Выберите старую деталь и объект. Найдите переименованную деталь в дереве и выберите тот же объект в новой детали. Затем подтвердите выбор.
 * Удалить старую деталь в дереве. Также можно удалить и файл.
 * Ограничения и элементы старой детали стали недействительными. Откройте ограничения или список элементов в дереве. Затем последовательно
 * выберите грани каждого элемента на новой детали. Элемент в дереве будет выделен.
 * Возьмите этот элемент и перетащите его на старый элемент (либо в списке элементов, либо в одном из ограничений, где он использовался). Этот элемент должен стать действительным.
 * Повторите процедуру для остальных элементов. Часто одного элемента достаточно, чтобы Assembly3 могла автоматически идентифицировать остальные элементы детали.
 * Если элемент был случайно назначен не той поверхности, просто повторите с правильной гранью.
 * При желании измените имя объекта в FreeCAD


 * Замена детали другой деталью
 * на достаточно похожую деталь, чтобы исходные ограничения, конечно, все еще имели смысл
 * Удалите старую деталь в дереве. Также можно удалить файл.
 * Ограничения и элементы старой детали стали недействительными. Откройте ограничение или список элементов в дереве.
 * Выберите грань элемента новой детали. Элемент в дереве будет выделен.
 * Возьмите этот элемент и перетащите его на старый элемент (либо в списке элементов, либо в одном из ограничений, где он использовался). Этот элемент должен стать действительным.
 * Повторите процедуру для остальных элементов.
 * Если элемент был случайно назначен не той поверхности, просто повторите с правильной гранью.
 * При желании измените имя объекта в FreeCAD

''Примечания ''
 * Эти способы не такие сложные, как могут показаться. Через 2–3 применения они станут гармоничнее и станут легче в применении.
 * Это не только быстрее, чем удаление и повторное выполнение ограничений, но и безопаснее, потому что элемент может быть использован в родительской сборке. Удаление оригинала уничтожит эту ссылку, повторная установка сохранит ее.
 * Также эта процедура становится действительно быстрой и простой, если ограничения и элементы имеют названия. Не нужно гадать, куда следует перетащить грани, потому что названия говорят сами за себя (см. Советы и хитрости).

наверх

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

 * Использование иерархических сборок помогает избежать проблем с решателем и позволяет сохранить плавность моделирования. Вы можете заморозить подсистему одним щелчком мыши и сэкономите ресурсы процессора (используйте контекстное меню в дереве). При загрузке сборки Assembly3 не нужно открывать внешние файлы для замороженных подсистем, что сохраняет компактность дерева.
 * Очень полезно выработать привычку именовать элементы и ограничения. Используйте клавишу, чтобы это делать быстро в дереве. Инструменты сортировки дерева в основной панели инструментов будут очень полезными. Сборка с полностью именованными ограничениями и элементами очень проста в понимании для других людей или для самого себя, по сравнению с предыдущими файлами.
 * Примерами имен ограничений для стола могут быть "Align_FrontLegs", "Align_FrameBottom-LegTops", а именами элементов - "Leg1_Top" или "TableTop_Front", "TableTop_Left".
 * Пожалуйста, обратите внимание, что после того, как внешние файлы открыты сборкой, их нелегко закрыть снова, не закрыв сборку. Так как сборка сохраняет открытыми эти файлы в обратном порядке, вкладка может исчезнуть, но файл останется видимым в дереве. При наличии нескольких слоев подсистем закрытие отдельных файлов становится близким к невозможности. Такое поведение может измениться, но до тех пор возможным подходом может быть регулярное использование команд Файл/Сохранить все и Файл/Закрыть все для очистки дерева перед работой с другой подсистемой.
 * ''Пример: рассмотрим, что у вас есть большой станок с ЧПУ с основной сборкой и подразделом для каждого модуля. После того, как у вас открыта основная сборка, она может открыть буквально сотни файлов вплоть до одного шарикоподшипника. Перед работой над подразделом корпуса электроники станка хорошо сохранить и закрыть все файлы, чтобы получить пустое дерево. Затем откройте только подраздел корпуса электроники. При этом откроются все нужные файлы, и только они.
 * Использование внешних файлов облегчает повторное использование частей или версионирование частей с такими системами, как git или Subversion. Рабочий процесс во FreeCAD с Assembly чувствуется точно так же, как и с файлами, в которых все части находятся в одном файле. Для частого обмена файлами с другими сторонами более удобным может оказаться использование отдельных файлов.
 * Детали с множественными связями. Если вы добавите ссылку в сборку, то она будет иметь значение свойства под названием "Element Count", по умолчанию 0. Если вы установите это значение в 3, то получите 3 экземпляра этой части. Они будут добавлены в подпапку и могут быть использованы как полностью разделяемые части. Используйте эту возможность, чтобы сохранить данные в файле на низком уровне, т.к. часть сохраняется только один раз. Каждый экземпляр содержит только различия.
 * Вставьте несколько деталей, например, Винты, одним кликом. Проверьте Assembly3 Wiki на сайте Github. Это не только потрясающая функция (даже немножко волшебная), но и действительно очень полезная.


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

наверх

Ссылки

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