Assembly3 Workbench/ru

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

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

наверх

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


 * Основная панель инструментов содержит инструменты, которые охватывают наиболее часто используемые функции верстака. С помощью подсказок можно узнать о клавиатурных сокращениях.
 * Добавить папку сборки
 * Группировать объекты
 * Создать ссылку. Это также доступно в контекстном меню
 * Импорт STEP-файлов
 * Устранить ограничения
 * Быстрое устранение ограничений
 * Инструмент1 для перемещения деталей в 3D, это специфично для Assembly3
 * Инструмент2 для перемещения деталей в 3D, это классический инструмент, доступный в другом месте FreeCAD.
 * Быстрое перемещение. При этом выделенная в дереве часть будет прикреплена к курсору мыши. Она изменит положение детали при щелчке мышью.
 * Часто добавляемые части накладываются друг на друга в начале координат. Используйте эту функцию, чтобы захватить деталь, которую вы не видите.
 * Блокировка перемещения зафиксированных частей. Кнопка переключения. Когда эта кнопка не нажата, можно перемещать части, которые имеют ограничение "Locked".
 * Переключатель видимости. Переключает видимость вкл/выкл. выделенной части.
 * Обратите внимание, что здесь отличается использование пробела. Использование пробела для выделенных элементов из подразделов в 3D-виде часто ведет себя не так, как ожидалось. Используйте эту функцию в этих случаях (или сочетание A-Space).
 * Отслеживание перемещения части (TBD)
 * Автоматический пересчет. Обычно включено.
 * Может быть не включено при ремонте ограничений или исправлении деталей, когда решатель выдает сообщение "не сходятся" (например, поворачивая деталь на 180 градусов).
 * Умный-Пересчёт. Обычно включено.
 * Автоматическое исправление элементов. Экспериментальная возможность в 0.19_pre
 * Стиль элемента. Имеет две настройки
 * Автоматическая видимость элемента.
 * Показать систему координат элемента.
 * Команды рабочей плоскости. Добавляет рабочую плоскость, размещение или начало координат. Деталь должна быть выбрана.
 * добавить рабочую область
 * добавить XZ область
 * Добавить YZ область
 * добавить Размещение
 * добавить Начало координат
 * Переместить выбранный элемент дерева вверх
 * Переместите выбранный элемент дерева вниз
 * Позволяет сортировать Детали, Элементы или Ограничения в дереве. Элемент сворачивается (сверху вниз и наоборот). Работает только при единичном выборе.
 * Множественное Ограничение. Это может быть выбрано, если присутствует несколько частей и подходящих Элементов. Используется, например, для назначения нескольких креплений одного типа в несколько отверстий с одним ограничением.


 * The Main Toolbar contains tools that cover the most often used features of the workbench. The tooltips will give the keyboard short cuts.


 * [[Image:Assembly_New_Assembly.svg‎‎|32px]] Create assembly: Add an assembly folder
 * [[Image:Assembly_New_Group.svg‎‎|32px]] Group objects: Group objects
 * [[Image:Assembly_New_Element.svg‎‎|32px]] Create element: Create element.
 * Import from STEP. This has two settings
 * [[Image:Assembly_Import.svg‎‎|32px]] Import from STEP: Import STEP files
 * [[Image:Assembly_ImportMulti.svg‎‎|32px]] Import as multi-document: Import assemblies from STEP into separate documents
 * [[Image:Assembly3_workbench_icon.svg‎‎|32px]] Resolve constraints: Resolve constraints
 * [[Image:Assembly_QuickSolve.svg‎‎|32px]] Quick solve: Quick resolve constraints
 * [[Image:Assembly_Move.svg‎‎|32px]] Move part: Move parts in 3D, this is specific to Assembly3
 * [[Image:Assembly_AxialMove.svg‎‎|32px]] Axial move: Axial move parts in 3D, this is the classical tool available elsewhere in FreeCAD
 * [[Image:Assembly_QuickMove.svg‎‎|32px]] Quick move: This will attach the part selected in the tree to the mouse cursor. It will change the position of the part when you click.
 * Often added parts are stacked upon each other in the origin. Use this function to grab a part you can not see.
 * [[Image:Assembly_LockMover.svg‎‎|32px]] Lock mover: Lock mover for fixed part. Toggle Button. When this is un-selected you can move the parts that have a "Locked" constraint.
 * [[Image:Assembly_TogglePartVisibility.svg‎‎|32px]] Toggle part visibility: This toggles the visiblity of the selected part on/off.
 * Note that this differs from using space. Using space with selected items from a sub-assembly in the 3D view often does not behave as expected. Use this function in those cases (or shortcut A-Space)
 * [[Image:Assembly_Trace.svg‎‎|32px]] Trace part move: Trace part move (TBD)
 * [[Image:Assembly_AutoRecompute.svg‎‎|32px]] Auto recompute: Auto recompute. Usually enabled.
 * May be un-selected when repairing constraints or fixing parts where the solver gives a "do not converge" message (e.g. by turning the part 180deg)
 * [[Image:Assembly_SmartRecompute.svg‎‎|32px]] Smart recompute: Smart recompute. Usually enabled.
 * [[Image:Assembly_AutoFixElement.svg‎‎|32px]] Auto fix element: Element Auto Fixing. Experimental feature in 0.19_pre
 * Element Style. This has two settings
 * [[Image:Assembly_AutoElementVis.svg‎‎|32px]] Auto element visibility: Auto element visibility
 * [[Image:Assembly_ShowElementCS.svg‎‎|32px]] Show element coordinate system: Show element coordinate system
 * Workplane and origin. Adds a workplane, placement or origin. A part must be selected. This has five settings
 * [[Image:Assembly_Add_Workplane.svg‎‎|32px]] Add workplane: Add XY workplane
 * [[Image:Assembly_Add_WorkplaneXZ.svg‎‎|32px]] Add XZ workplane: Add XZ workplane
 * [[Image:Assembly_Add_WorkplaneZY.svg‎‎|32px]] Add ZY workplane: Add YZ workplane
 * [[Image:Assembly_Add_Placement.svg‎‎|32px]] Add placement: Add placement
 * [[Image:Assembly_Add_Origin.svg‎‎|32px]] Add Origin: Add Origin
 * [[Image:Assembly_TreeItemUp.svg‎‎|32px]] Move item up: Move selected tree item up
 * [[Image:Assembly_TreeItemDown.svg‎‎|32px]] Move item down: Move selected tree item down
 * Allows to sort Parts, Elements or Constraints in the tree. Element roll over (top to bottom and vice versa). Only works for a single selection.
 * [[Image:Assembly_ConstraintMultiply.svg‎‎|32px]] Multiply constraint: Multiply Constraint. This can be selected if multiple parts and suitable Elements are present.
 * It is used e.g. to assign multiple fasteners of the same type into multiple holes with one constraint.


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


 * [[Image:Assembly_ConstraintLock.svg‎‎|28px]] [[Image:Assembly_ConstraintAlignment.svg‎‎|28px]] [[Image:Assembly_ConstraintCoincidence.svg‎‎|28px]] [[Image:Assembly_ConstraintAttachment.svg‎‎|28px]] [[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]]


 * Some tools are actually a menu for more tools.


 * [[Image:Assembly_ConstraintLock.svg‎‎|32px]] Locked: Add a "Locked" constraint to fix one or more parts.
 * You must select a geometry element of the part.
 * If you fix a vertex or an edge the part is still free to rotate around the vertex or edge.
 * Fixing a face will completely lock the part.
 * [[Image:Assembly_ConstraintAlignment.svg‎‎|32px]] Plane Alignment: Add a "Plane alignment" constraint to align planar faces of two or more parts.
 * The faces become coplanar or parallel with an optional distance.
 * [[Image:Assembly_ConstraintCoincidence.svg‎‎|32px]] Plane Coincidence: Add a "Plane coincidence" constraint to coincide planar faces of two or more parts.
 * The faces are coincided at their centers with an optional distance.
 * [[Image:Assembly_ConstraintAttachment.svg‎‎|32px]] Attachment: Add an "Attachment" constraint to attach two parts by the selected geometry elements.
 * This constraint completely fixes the parts relative to each other.
 * [[Image:Assembly_ConstraintAxial.svg‎‎|32px]] Axial Alignment: Add an "Axial alignment" constraint to align edges/faces of two or more parts.
 * The constraint accepts
 * linear edges, which become collinear,
 * planar faces, which are aligned using their surface normal axis,
 * and cylindrical face, which are aligned using the axial direction.
 * Different types of geometry elements can be mixed.
 * [[Image:Assembly_ConstraintSameOrientation.svg‎‎|32px]] Same orientation: Add a "Same orientation" constraint to align faces of two or more parts.
 * The planes are aligned to have the same orientation (i.e. rotation)
 * [[Image:Assembly_ConstraintMultiParallel.svg‎‎|32px]] Multi parallel: Add a "Multi parallel" constraint to make planar faces or linear edges of two or more parts parallel.
 * [[Image:Assembly_ConstraintAngle.svg‎‎|32px]] Angle: Add an "Angle" constraint to set the angle of planar faces or linear edges of two parts.
 * [[Image:Assembly_ConstraintPerpendicular.svg‎‎|32px]] Perpendicular: Add a "Perpendicular" constraint to make planar faces or linear edges of two parts perpendicular.
 * [[Image:Assembly_ConstraintPointCoincident.svg‎‎|32px]] Points coincident: Add a "Point coincident" constraint to coincide two points in 2D or 3D.
 * [[Image:Assembly_ConstraintPointInPlane.svg‎‎|32px]] Point on plane: Add a "Point on plane" to constrain one or more point onto a plane.
 * [[Image:Assembly_ConstraintPointOnLine.svg‎‎|32px]] Point on line: Add a "Point on line" to constrain a point onto a line in 2D or 3D.
 * [[Image:Assembly_ConstraintPointOnCircle.svg‎‎|32px]] Point on circle: Add a "Point on circle" to constrain one or more points on to a clyndrical surface defined by a cricle.
 * Note that you must select a point (any geometry element can define a point), and then select the circle (or clyndrical surface),
 * after which you can add more points to your selection if you want.
 * [[Image:Assembly_ConstraintPointsDistance.svg‎‎|32px]] Points distance: Add a "Points distance" to constrain the distance of two or more points.
 * [[Image:Assembly_ConstraintPointPlaneDistance.svg‎‎|32px]] Point plane distance: Add a "Point plane distance" to constrain the distance between one or more points and a plane.
 * [[Image:Assembly_ConstraintPointLineDistance.svg‎‎|32px]] Point line distance: Add a "Point line distance" to constrain the distance between a point and a linear edge in 2D or 3D.
 * [[Image:Assembly_ConstraintSymmetric.svg‎‎|32px]] Symmetric: Add a "Symmetric" constraint to make geometry elements of two parts symmetric about a plane.
 * The supported elements are linear edge and planar face.
 * [[Image:Assembly_ConstraintMore.svg‎‎|32px]] More: Toggle toolbars for more constraints
 * Not really a constraint but a toggle switch to show/hide the Additional Constraints Toolbars.

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)


 * You can enable these by selecting the button on the Main Constraints toolbar.


 * [[Image:Assembly_ConstraintPointDistance.svg‎‎|32px]] Point distance: Add a "Point distance" to constrain the distance of two points in 2D or 3D.
 * [[Image:Assembly_ConstraintEqualAngle.svg‎‎|32px]] Equal angle: Add an "Equal angle" to equate the angles between two lines or normals.
 * [[Image:Assembly_ConstraintPointsSymmetric.svg‎‎|32px]] Points symmetric: Add a "Points symmetric" constraint to make two points symmetric about a plane.
 * [[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: Add a "Symmetric line" constraint to make two points symmetric about a 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: Add a "Points vertical" constraint to make two points vertical with each other when projected onto a plane.
 * [[Image:Assembly_ConstraintLineHorizontal.svg‎‎|32px]] Line horizontal:Add a "Line horizontal" constraint to make a line segment horizontal when projected onto a plane.
 * [[Image:Assembly_ConstraintLineVertical.svg‎‎|32px]] Line vertical: Add a "Line vertical" constraint to make a line segment vertical when projected onto a plane.
 * [[Image:Assembly_ConstraintArcLineTangent.svg‎‎|32px]] Arc line tangent: Add an "Arc line tangent" constraint to make a line tangent to an arc at the start or end point of the arc.


 * [[Image:Assembly_ConstraintSketchPlane.svg‎‎|32px]] Sketch plane: Add a "Sketch plane" to define the work plane of any draft element inside or following this constraint.
 * Add an empty "Sketch plane" to undefine the previous work plane.
 * [[Image:Assembly_ConstraintLineLength.svg‎‎|32px]] Line length: Add a "Line length" constrain the length of a non-subdivided Draft.Wire.
 * [[Image:Assembly_ConstraintEqualLength.svg‎‎|32px]] Equal length: Add an "Equal length" constraint to make two lines of the same length.
 * [[Image:Assembly_ConstraintLengthRatio.svg‎‎|32px]] Length ratio: Add a "Length ratio" to constrain the length ratio of two lines.
 * [[Image:Assembly_ConstraintLengthDifference.svg‎‎|32px]] Length difference: Add a "Length difference" to constrain the length difference of two lines.
 * [[Image:Assembly_ConstraintLengthEqualPointLineDistance.svg‎‎|32px]] Length Equal Point Line Distance: Add a "Length Equal Point Line Distance" to constrain the distance
 * between a point and a line to be the same as the length of a another line.
 * [[Image:Assembly_ConstraintGeneral.svg‎‎|32px]] ( [[Image:Assembly ConstraintEqualLineArcLength.svg‎‎|32px]] )Equal Line Arc Length: Add an "Equal Line Arc Length" constraint to make a line of the same length as an arc.
 * [[Image:Assembly_ConstraintMidPoint.svg‎‎|32px]] Mid point: Add a "Mid point" to constrain a point to the middle point of a line.
 * [[Image:Assembly_ConstraintDiameter.svg‎‎|32px]] Diameter: Add a "Diameter" to constrain the diameter of a circle/arc.
 * [[Image:Assembly_ConstraintEqualRadius.svg‎‎|32px]] Equal radius: Add an "Equal radius" constraint to make two circles/arcs of the same radius.
 * [[Image:Assembly_ConstraintPointsProjectDistance.svg‎‎|32px]] Points project distance: Add a "Points project distance" to constrain the distance of two points projected on a line.
 * [[Image:Assembly_ConstraintEqualPointLineDistance.svg‎‎|32px]] Equal point line distance: Add an "Equal point line distance" to constrain the distance
 * between a point and a line to be the same as the distance between another point and line.
 * [[Image:Assembly_ConstraintColinear.svg‎‎|32px]] Colinear: Add a "Colinear" constraint to make two lines collinear.


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


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


 * Theses functions are useful when working with an assembly with a hierarchy of linked external files


 * [[Image:Assembly_GotoRelation.svg‎‎|32px]] Go to relation: Reveals the Relations group (hidden by default) and selects a relation object.
 * Std_LinkSelectLinked.svg Select linked object: Selects the linked object and switches to its document.
 * Std_LinkSelectLinkedFinal.svg Select linked final: Selects the deepest linked object and switches to its document.


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


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


 * The Measurement toolbar adds functions to measure the distance or the angle between two objects


 * [[Image:Assembly_MeasurePointDistance.svg‎‎|32px]] Measure points: Add a "Measure points" to measure the distance of two points in 2D or 3D.
 * [[Image:Assembly_MeasurePointLineDistance.svg‎‎|32px]] Measure point to line: Add a "Measure point to line" to measure the distance between a point and a linear edge in 2D or 3D.
 * [[Image:Assembly_MeasurePointPlaneDistance.svg‎‎|32px]] Measure point to plane: Add a "Measure point to plane" to measure the distance between a point and a plane.
 * [[Image:Assembly_MeasureAngle.svg‎‎|32px]] Measure angle: Add a "Measure angle" to measure the angle of planar faces or linear edges of two parts.


 * There is no 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" (первая иконка в 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 ещё в стадии проектирования и пока (апрель 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" на панели инструментов ограничения
 * Готовое дерево сборки должно выглядеть как на изображении выше

The tree view should look like this (0.20.pre and Link Branch):




 * Now Drag&Drop with the mouse both Cylinder and Cube onto the Parts folder. They are moved into that folder.
 * That is the quickest way and suitable for simple cases like this. A better way is via the use of link objects:
 * Select Cube and Cylinder and then either from the Contetx menu (-> LinkActions -> MakeLink) or the Structure panel.
 * This adds two link objects. Then Drag&Drop the link objects to the Parts folder.
 * Click both top surfaces of Cylinder and Cube (keep Ctrl pressed (Cmd on a Mac))
 * Change to [[Image:Assembly3_workbench_icon.svg|16px]] Assembly3 workbench
 * Select from the Main constraints toolbar.

Now the parts should be joined into each other and your tree should look like this (0.20.pre and Link Branch):




 * Right click _Element (either of the two) and select Flip Part.

Now the Cylinder should be on top of the Cube. If the whole thing is upside down, go back and select Flip Part on the other element.
 * We omitted one important step that should be done in larger assemblies: Locking a base part.
 * That means to define one part that should not be moved by constraints. In this example we use the Cube for that:
 * Select the lower face of the Cube. Only the lower face, not the whole Cube
 * select the constraint from the Main constraints toolbar

Done.

The finished assembly tree should look like (0.20.pre and Link Branch):



If you like you can move the Locked constraint upwards in the tree. Use the button on the Main toolbar for that.

Заметьте: все новые внешние файлы должны быть сохранены, закрыты и повторно открыты как минимум один раз, чтобы 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 применения они станут гармоничнее и станут легче в применении.
 * Это не только быстрее, чем удаление и повторное выполнение ограничений, но и безопаснее, потому что элемент может быть использован в родительской сборке. Удаление оригинала уничтожит эту ссылку, повторная установка сохранит ее.
 * Также эта процедура становится действительно быстрой и простой, если ограничения и элементы имеют названия. Не нужно гадать, куда следует перетащить грани, потому что названия говорят сами за себя (см. Tips & Tricks).

top

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

 * Использование иерархических сборок помогает избежать проблем с решателем и позволяет сохранить плавность моделирования. Вы можете заморозить подсистему одним щелчком мыши и сэкономите ресурсы процессора (используйте контекстное меню в дереве). При загрузке сборки 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
 * Внешние верстаки
 * План разработки старого проекта Assembly, для знакомства с историей вопроса.