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

At last you may ask why there is no global coordinate system in the last picture. Thats because nothing like a global coordinate system exists, it was just a concept for easy explaining. If you assembly your electrical motor, the top-level coordinate system would be the Product1 system. However, this is not a general global one, as you can add it to a another product which is the top-level cs afterwards. And this can be added to another, and so on. There is nothing like a global coordinate system, just a top-level one.

To summarize: In the assembly workbench you can combine parts to assemblies (products). These products can be staked together with other parts in arbitrary numbers.

Как установить отношения: сборочные ограничения
Up to now we discussed all details of moving things around with placements and the objects involved in it. It is however very tedious to calculate all placements by hand and set them manual via the property editor. It would be more pleasant if it would be possible to set simple relations between parts instead of abstract rotations and translations. Therefore FreeCAD introduces assembly constraints. As the name indicates, they work the same way as in the sketcher: the user applies different attributes to geometries of the parts. This can be for example the distance between two points, or their orientation (parallel, perpendicular) of lines etc. FreeCAD trys then to find placements which satisfy all given constraints.



To assemble things in the real world, one would use the parts structure to fit the counterpart into its place, for example a bolt which belongs into a hole. Or surfaces which touch each other and therefore define the parts exact position. In FreeCAD it works exactly like that: you use the parts geometry to specify where the second part belongs to. At your disposal are points, straight lines, planes and cylinders. The picture to the right shows them all in the FreeCAD environment. But of course, the geometry alone is not enough to calculate the parts positions, the kind of relation needs to be known too. For example two faces: They can touch each other, or just be parallel, maybe even perpendicular. This relation is set in FreeCAD through the already mentioned assembly constraints. You have 6 diffrent types at your hand: Fix, Distance, Orientation, Angle, Align and Coincident. Lets see what they all do and how to use them.

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

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