Manual:Traditional modeling, the CSG way/ru

КБГ означает Конструктивную блочную геометрию (Constructive Solid Geometry, CSG), и описывает самый простой способ работы со сплошной трёхмерной геометрией: создание сложных объектов добавкой и удалением кусков в/из сплошных тел с помощью булевых операций, таких как объединение, вычитание или пересечение.

Как мы уже видели в этом руководстве, FreeCAD может поддерживать множество типов геометрии, но предпочтительным и наиболее подходящим типом объёмных объектов, которые мы будем проектировать с помощью FreeCAD, это объекты реального мира, которые, разумеется, твердотельные, граничной геометрией, которая в основном поддерживается модулем Part. В отличие от полигональных сеток, которые состоят из точек и треугольников, поверхности объектов BREP определяются математическими кривыми, обеспечивающими абсолютную точность вне зависимости от масштаба.



Различие между ними может сравниться с различием между растровыми и векторными изображениями. Как в растровых изображениях, полигональные сетки разбивают кривые поверхности на последовательность точек. При взгляде на них в приближении или печати в большом масштабе они будут видны не как кривые, а как гранёная поверхность. Как в векторных изображениях, так и в данных граничных представлений, позиция любой точки кривой не сохраняется в геометрии, а вычисляется на лету, с высокой точностью.

Граничная геометрия в FreeCAD поддерживается сторонним приложением с открытыми источниками, OpenCasCade. Основным интерфейсом между FreeCAD и ядром OpenCasCade служит модуль Part. Большинство других верстаков строят свою функциональность поверх модуля Part.

Хотя другие верстаки часто предлагают более совершенные инструменты для построения и манипуляции геометрией, поскольку все они фактически манипулируют объектами Part, полезно знать как эти объекты работают изнутри, и уметь использовать инструменты Part, поскольку они проще и часто могут помочь обойти проблемы, которые более интеллектуальные инструменты не могут решить правильно.

Для иллюстрации работы верстака Part мы будем моделировать этот стол, используя лишь операции CSG (за исключением винтов, для которых мы используем одно из расширений, и размерностей, которые мы рассмотрим в следующей главе):



Создадим новый документ (Ctrl+N или через меню Файл -> Создать), переключимся на верстак Part, и начнём с первой ножки:


 * Нажмите [[Image:Part_Box.png|16px]] кнопку Куб
 * Выделите куб и установите следующие параметры на вкладке Данные:
 * Length: 80mm (или 8cm, или 0.8m, FreeCAD работает с любыми единицами)
 * Width: 80mm
 * Height: 75cm
 * Продублируйте параллелепипед нажатием Ctrl+C, затем Ctrl+V (или в меню Правка -> Дубликат)
 * Выделите новый созданный объект
 * Смените его позицию редактированием параметра Placement:
 * Position x: 8mm
 * Position y: 8mm

Вы получите два высоких параллелепипеда, один в 8 миллиметрах от другого:




 * Теперь мы можем вычесть один из другого: выделите первый, который должен остаться, затем, с помощью нажатой кнопки CTRL, выделите другой, который будет вычтен (порядок важен), и нажмите кнопку [[Image:Part_Cut.png|16px]] Обрезать:



Заметим, что вновь созданный объект, называемый "Cut", по-прежнему содержит два куба, использованных в качестве операндов. На деле оба куба остались в документе, просто они были скрыты и сгруппированы в древе проекта как объект Cut. Их еще можно выбрать, раскрывая стрелку у объекта Cut, и при желании можно сделать их видимыми снова, щелкнув их правой кнопкой, или изменить их свойства.


 * Теперь давайте создадим три других ножки, создав 6 дублей нашего базового куба. Поскольку он уже скопирован, можно просто вставить его (Ctrl+V) 6 раз. Изменим их позиции следующим образом:
 * Куб002: x: 0, y: 80cm
 * Куб003: x: 8mm, y: 79.2cm
 * Куб004: x: 120cm, y: 0
 * Куб005: x: 119.2cm, y: 8mm
 * Куб006: x: 120cm, y: 80cm
 * Куб007: x: 119.2cm, y: 79.2cm


 * Теперь сделаем три остальных выреза, выбрав сначала "базовый" параллелепипед, затем вырезаемый. Теперь у нас три объекта Cut:



Вы могли подумать, что вместо шестикратного дублирования базового куба нам следовало дублировать полную ножку три раза. Это правда, как всегда в FreeCAD, есть много путей получить тот же результат. Это важно запомнить, поскольку по мере продвижения к более сложным объектам некоторые операции не дадут нам правильный результат и нам часто понадобится искать другие пути.


 * Теперь сделаем отверстия для винтов, используя тот же метод Cut. Поскольку нам нужно 8 отверстий, два на каждую ножку, нам нужно сделать 8 вычитаемых объектов. Вместо этого поищем другой путь и сделаем 4 трубки, которые могут использоваться двумя ножками. Создадим четыре трубки инструментом [[Image:Part_Cylinder.png|16px]] Цилиндр. Можно опять сделать только один и дублировать взамен. Возьмём все цилиндры радиусом 6mm. Теперь нам надо повернуть их, что может быть сделано параметром Placement:
 * Цилиндр: height: 130cm, angle: 90°, axis: x:0,y:1, position: x:-10mm, y:40mm, z:72cm
 * Цилиндр001: height: 130cm, angle: 90°, axis: x:0,y:1, position: x:-10mm, y:84cm, z:72cm
 * Цилиндр002: height: 90cm, angle: 90°, axis: x:-1,y:0, position: x:40mm, y:-10mm, z:70cm
 * Цилиндр003: height: 90cm, angle: 90°, axis: x:-1,y:0, position: x:124cm, y:-10mm, z:70cm



Как видите, цилиндры чуть длиннее, чем надо. Это потому что во всех твердотельных приложениях FreeCAD булевы операции чувствительны к ситуациям с совпадающими поверхностями и могут ошибаться. Удлинив цилиндры, мы предохраняем себя.

CTRL, выделим один из пересекающих его цилиндров и нажмём кнопку Cut. Возникает отверстие, а цилиндр скрывается. Находим его в древе проекта раскрытием высверленной ножки.
 * Теперь выполним вычитание. Выберем первую ножку, затем, нажимая
 * Выделим другую ножку, которую пересекает этот скрытый цилиндр, затем повторяем эту операцию, на этот раз нажимая Ctrl во время выделения цилиндра в древе проекта, поскольку он не виден в трёхмерном виде (можно так же сделать его видимым вновь и выделить в трёхмерном виде). Повторим это для других ножек, пока каждая из них не окажется высверлена в двух местах:



Как видите, каждая ножка содержит длинную серию операций. Всё это остаётся параметрическим, и Вы можете в любое время изменить любой параметр любой из прежних операций. В FreeCAD мы часто называем эту последовательность как "историю моделирования", поскольку фактически она содержит всю историю выполненных операций.

Другая особенность FreeCAD - что концепция трёхмерного объекта и трёхмерной операции склонны к смешиванию воедино. Например, Cut это одновременно и операция, и получаемый из этого объект. В FreeCAD это зовётся "характеристика", вместо объекта или операции.


 * Теперь сделаем столешницу, это будет простой деревянный массив, сделаем его как ещё один Куб длиной 126cm, шириной 86cm и высотой 8cm, в положении x: 10mm, y: 10mm, z: 67cm. Во вкладке Вид можно получить красивый коричневый, похожий на дерево цвет, изменив параметр Shape Color:



Кстати, хотя у ножек толщина 8 мм, мы поместили их на 10мм в сторону, оставив между ними 2 мм. Это не нужно, разумеется, этого не случится с настоящим столом, но это общепринято в этом виде "сборных" моделей, это помогает изучающим модель понять, что это независимые части, которые должны быть присоединены вручную позднее.

Теперь, когда все пять частей готовы, пришло время дать им более подходящие имена, чем "Cut015". Правым кликом в древе проекта (или нажатием F2) можно переименовать их во что-то более значимое для вас или других, кто откроет смотреть ваш файл позднее. Говорят, что правильное название ваших объектов важнее того, как Вы их получили.


 * Теперь установим болты. Теперь существует очень полезное расширение, разработанное членом сообщества FreeCAD, который можно найти в репозитории расширений FreeCAD, называемое Fasteners (крепежи), делающее установку винтов очень простым. Установка дополнительных верстаков легка и описывается на странице расширений.
 * Когда вы установите верстак Fasteners и перезагрузите FreeCAD, он появится в списке верстаков, и мы сможем переключиться на него. Добавление винта в одно из наших отверстий делается через первоначальное выделение круглой грани нашего отверстия:




 * Теперь мы можем нажать кнопку винтов на верстаке Fasteners, например, EN 1665 Hexagon bolt with flanges, heavy series. Винты могут быть установлены и центрованы по нашим отверстиям, и резьба будет выбрана автоматически по размеру отверстия. Иногда болты устанавливаются в противоположном направлении, что может быть скорректировано их параметром invert. Мы так же можем установить их смещение на 2 мм, по тому же правилу, которое мы использовали между столешницей и ножками:




 * Повторим это для всех отверстий, и наш стол готов!

Внутренняя структура объектов Part

Как мы видели выше, в FreeCAD можно выбрать не только целый объект, но и его части, такие как круглую границу отверстия под винт. Теперь бросим быстрый взгляд на внутренне устройство объектов Part. Каждый верстак, создающий геометрию Part, будет базироваться на этом:


 * Vertices: These are points (usually endpoints) on which all the rest is built. For example, a line has two vertices.
 * Edges: the edges are linear geometry like lines, arcs, ellipses or NURBS curves. They usually have two vertices, but some special cases have only one (a closed circle for example).
 * Wires: A wire is a sequence of edges connected by their endpoints. It can contain edges of any type, and it can be closed or not.
 * Faces: Faces can be planar or curved, and can be formed by one closed wire, which forms the border of the face, or more than one, in case the face has holes.
 * Shells: Shells are simply a group of faces connected by their edges. It can be open or closed.
 * Solids: When a shell is tightly closed, that is, it has no "leak", it becomes a solid. Solids carry the notion of inside and outside. Many workbench rely on this to make sure the objects they produce can be built in the real world.
 * Compounds: Compounds are simply aggregates of other shapes, no matter their type, into a single shape.

В трёхмерном виде можно выделить отдельные вершины, рёбра или грани. Выделение любого из них выделяет весь объект.

Примечание о совместном проектировании

Глянув на спроектированный стол, Вы можете решить, что его дизайн плох. Крепление ножек, вероятно, слабовато. Вы можете добавить усиления, или у Вас появятся другие идеи для его улучшения. Здесь появляется интерес к совместному проектированию. Вы можете загрузить файл, созданный во время упражнения по ссылке ниже, и улучшить его. Затем, если Вы поделитесь улучшенным файлом, другие смогут сделать его ещё лучше, или использовать Ваш хорошо спроектированный стол в своих проектах. Ваш дизайн может дать идеи другим людям, и, возможно, Вы немного поможете сделать мир лучше...

Загрузки


 * Файл, созданный в этом упражнении: https://github.com/yorikvanhavre/FreeCAD-manual/blob/master/files/table.FCStd

Читать далее


 * Верстак Part
 * Репозиторий расширений FreeCAD
 * Верстак Fasteners (Крепления)