Assembly Basic Tutorial/ru

В этом учебнике будут указаны некоторые внутренности текущего процесса сборки, предоставляя теоретические основы используемого дизайна. Цель состоит в том, чтобы понять работу верстака Assembly, его структуру и способы использования.

Этот верстак находится на ранней стадии проектирования, поэтому Вы столкнётесь с неправильное поведением и всеми видами ошибок/сбоев. Пожалуйста, сообщайте о воспроизводимых проблемах на подфорум assembly или систему отслеживания ошибок.

Как это двигать: координатная система
Задачей верстака для сборок является перестановка частей. Поэтому ясно, что нужен способ для получения этой трансформации частей, и эта часть введения будет посвящена этой базовой функциональности.

В FreeCAD каждый объект в трёхмерном пространстве имеет собственную координатную систему. Эта локальная система установлена относительно её родительской системы через трансформацию, её размещение. Размещение объектов определяет, как локальная геометрия должна транслироваться и вращаться для выражения в родительской системе. Следовательно, если Вы перемещаете деталь редактированием её параметра размещения, Вы не изменяете деталь, только трансформацию её координатной системы в родительскую систему. Представьте простой куб в верстаке Part. При создании параметр длинны устанавливает размер в местном направлении x. Когда расположении пусто, это тоже глобальное направление по оси x. Если Вы вращаете деталь, установив ось вращения и угол, длинна всё ещё будет в местном направлении x, тем не менее визуально это больше не изменит x, поскольку внешний вид представлен в глобальной координатной системе. Геометрия куба не изменится, изменится лишь визуализация.



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

Возвратимся к местной и родительской координатной системам: тело это идеальное воплощение этой концепции! Каждый элемент внутри тела не может быть перемещён напрямую, его размещение всегда пусто. Это значит, что геометрию элементов не нужно вращать или транслировать если мы хотим выразить их в координатной системе тела. Но мы можем перемещать тело внутри глобальной координатной системы установкой их размещения, и тогда глобальное значение геометрии элементов вычисляется применением этой же трансформации. Запомните, мы вращаем координатную системы. Это значит что если мы трансформируем систему тела, всё под ней используется как персональная глобальная система. Элементы не требуется перемещать вообще. Вам нужен весь дизайн в другом месте? Просто установите размещение тела!

Подытожим: координатные системы могут быть сгруппированы, каждый объект использует родительскую систему как персонально глобальную. Если родительская координатная система трансформирована, дочерние будут трансформированы без изменения их локальных систем.

Что может быть собрано: Объектная модель
С объектом типа Body мы имеем всё, что нужно для сборки: мы можем двигать сложные проекты in a comprehensible way, right?. Не совсем! Что случится, если Вы хотите вставить свой проект внутрь сборки несколько раз? Например, если Вы смоделировали винт, Вы не хотите повторять моделирование каждый раз, когда он нужен. Копирование помогает, но что если Вы измените проект винта: менять все копии? Это утомительно. Чтобы преодолеть это, снова предложен новый объект: деталь. Деталь это чисто сборочный объект и может быть сделан лишь внутри этого верстака. Его задача ссылаться на объект типа Body и давать иную координатную систему.

Чтобы понять, почему это введено, нам надо рассмотреть, как всё перемещается в FreeCAD. Давайте расширим чертёж тела выше двумя частями, ссылающимися на это же тело, как показано на следующей картинке.



Локальная система тела одинакова в обоих частях, тем не менее, части имеют их собственное размещение и потому могут быть трансформированы в отношении глобальной системы. Поскольку размещение применяется рекурсивно, те же возможности могут приводить к разным положениям. Представьте, что Вы изменили положение P4 и P5, ваш дизайн появится в двух полностью различных местах внутри глобальной системы без изменений для функций или тела, содержащего их. Затем представим изменение базовой координатной системы P3: вам придётся изменить позицию всех вхождений вашего дизайна тем же образом!

Вы можете удивиться, как ваш проект может быть в двух местах, имея лишь одну геометрию? Это просто: деталь показывает лишь визуальное представление геометрии тела, и у Вас может быть несколько картинок вашей единственной детали. Так же эти визуальные представления трансформируются, если Вы установили размещения. Деталь не поддерживает никакой модельной информации.

Обратно к нашему случаю: если Вам нужно 100 винтов, Вы моделируете в Вашем проекте только одно тело. Используя для деталей различные размещения, Вы можете двигать винты как угодно. Если Вы что-то измените в своём проекте, тело обновляется и любая деталь тоже, поскольку все они ссылаются на него. Превосходно!

Теперь представим другой случай использования: у Вас прекрасная сборка электромотора из множества деталей, все помещены в правильную позицию. Тем не менее Вы хотите создать большую машину с несколькими электромоторами. Мы хотим использовать сборку мотора, по тем же причинам, что и применение для тела нескольких размещений. Для простых проектов мы можем создать несколько частей из одного тела, тем не менее, мы не можем создать детаьл из нескольких деталей. Следовательно, нам нужен другой объект, который способен делать это! FreeCAD вводит для этого объект продукта. Продукт, в основе, полная сборка с несколькими деталями, но так же имеет параметр размещения. Что это значит? Это становится ясным, когда мы снова расширяем чертёж нашей системы координат нашим новым объектом продукта.



Теперь наши детали относятся не к глобальной координатной системе, а группируются вокруг продукта. Для деталей ничего не меняется: они работают как прежде. И фактически, если наш Product1 будет объектом верхнего уровня, абсолютно ничего не изменится. Глобальная система просто заменится координатной системой продукта, которая работает как глобальная. В нашем примере мы добавили продукт к другому продукту, вместе с третьей деталью. Теперь становится интересно: поскольку продукт имеет параметр размещения, он может перемещаться! И мы уже узнали, что эта трансформация применяется ко всем дочерним объектам. Значит, деталь 1 и 2 будут перемещаться, если мы изменим размещение Product1.

Обратно к нашему примеру: Product1 может быть электрический мотор, а Product2 большой машиной. Теперь мы можем добавить несколько продуктов к машине, которые ссылаются на ту же деталь Product1, представляющую здесь электрический мотор. И каждый продукт может быть размещён по-разному, Вы можете перемещать любые моторы в любую позицию. Скомпонуйте это с другими частями и сборками и Вы сможете получить сложную машину. Опять, если Вы обновите одно тело, это обновит все части и все ссылки на продукты.

Вы можете спросить, почему на последней картинке нет глобальной координатной системы? Это потому, что ничего подобного глобальной координатной системы не существует, это концепт для упрощения объяснений. Если Вы соберёте свой электромотор, координатная система верхнего уровня будет система Product1. Однако, она не общая глобальная, поскольку Вы можете добавить её к другому продукту, который станет координатной системой верхнего уровня. И это может добавляться одно к другому и так до бесконечности. Нет глобальной координатной системы, есть лишь система верхнего уровня.

В итоге: на верстаке Assembly Вы можете комбинировать детали в сборки (конечный продукт). Эти продукты могут быть соединены с другими частями в любом числе.

Как установить отношения: сборочные ограничения
До сих пор мы обсуждали детали перемещения объектов и связанных с ним деталей. Однако вычислять все размещения и устанавливать их вручную через редактор параметров довольно муторно. Куда приятнее, если бы была возможность установить простые отношения между деталями вместо абстрактных вращений и переходов. Поэтому FreeCAD предлагает ограничения сборки. Как показывает название, они работают так же, как в верстаке Sketcher: пользователь применяет различные аттрибуты к геометрии деталей. Это могла быть, например, расстояние между двумя точками, или ориентация (параллельно, перпендикулярно) их линий и так далее. После этого FreeCAD старается найти размещения, которые отвечают всем ограничениям.



Для сборки вещей в реальном мире надо использовать структуру детали, чтобы вставить её в своё место, например, болт, который входит в отверстие, или поверхности, которые касаются друг друга и так определяют точное положение детали. В FreeCAD это происходит точно так же: Вы используете геометрию деталей, чтобы определить, где располагается другая деталь. В Вашем распоряжении точки, линии, плоскости и цилиндры. Картинка справа показывает их в окружении FreeCAD. Но, разумеется, геометрия сама по себе не достаточна для вычисления положения всех частей, должны быть известны некоторые дополнительные отношения. Например, две грани: они могут касаться друг друга, или быть параллельны, или даже перпендикулярны. Эти отношения устанавливаются в FreeCAD через уже упомянутые ограничения сборки. В ваших руках 6 различных типов: Fix, Distance, Orientation, Angle, Align и Coincident. Смотрите, что все они делают и как использовать их.

Фиксация
Ограничение фиксации это простейшее из ограничений. Для него требуется лишь выделить деталь и зафиксировать его положение и поворот. Не важно, что Вы делаете с этой деталью потом, оно останется на месте. И это единственная задача этого типа. Разумнее всего всегда иметь одну зафиксированную деталь на сборку, поскольку это может быть мукой, если все детали будут двигаться ради соблюдения ограничений. Если Вы зафиксируете большинство базовых частей в Вашей сборке, все другие части будут двигаться по отношению к ним что даст Вам прекрасный опыт. Заметьте, что эти ограничения работают только в сборке, где они сделаны, детали не будут зафиксированы в родительских сборках (напоминаем: сборки могут быть вложенными).

Дистанция
Как Вы догадались по названию, этим ограничением Вы можете определить расстояние между двумя геометриями. Это применимо для двух точек, точки и линии, линии и цилиндра и других комбинаций. Это ограничение довольно простое, но нужно упомянуть два обстоятельства. Во-первых, если есть несколько допустимых дистанций между геометриями, например, вышеупомянутой линией и цилиндром, используется кратчайшая дистанция. Во-вторых, иногда имеется несколько решений даже для кратчайшей дистанции. Это в случае расстояния от точки до плоскости: каждое значение может быть удовлетворено точкой над И под плоскостью. Так что если Вы укажете только значение, может случиться так что FreeCAD поместит точку не на той стороне плоскости. Против этого ограничение дистанции имеет специальную опцию, solution space. Эта опция позволяет уменьшить пространство возможных решений, чтобы оно совпадало с Вашими нуждами. Посмотрите, как это работает в нашем небольшом примере: