Part Module/ru

CAD возможности FreeCAD бизируются на ядре OpenCasCade. Модуль частей в FreeCAD открывает доступ к объектам и функциям OpenCasCade. OpenCascade это CAD ядро професионального уровня, это выражается в возможностях продвинутого манипулирование 3D геометрическим манипулированием и объектами. Объекты-детали, в отличии от Полигиональных объектов, являются более сложными, и следовательно дают доступ к более мощным операциям, таким как последовательные логические операции, изменение и истории и параметров построения.



Пример Детали сформированной в FreeCAD

Инструменты
Инструменты, модуля деталей расположены в меню Part которое появляется при загрузке модуля Деталей.

Логические операции


Вот примеры объединения(слияния), пересечения (получение общего) и вычитание (обрезание)

Объяснение концепции
В терминологии OpenCasCade, мы различаем геометрические примитивы и (топологические) формы. Геометрическим примитивом может быть точка, линия, окружность, полоскость и.т.д. , или даже более сложные типы, такие как кривая B-сплайна или поверхность. Формой может быть вешина, ребро, сеть, грань, твердое тело или смеьсь всех предыдущих форм. Геометрические примитивы не созданы специально для того чтобы отображаться на 3D сцене, они используются в качестве строительной геометрии форм. Для примера, ребро можно построить из линии или же из части окружности.

Мы могли бы сказать, подводя итоги, что геометрические примитивы "бесформенные" строительные блоки, а формы реальная пространственная геометрия построенная с их помощью. Чтобы получить полный список объектов что к ним относится обратитесь к документации OCC в разделах Geom_Geometry и TopoDS_Shape. Также вы больше сможете узнать о различиях геометрических объектов и форм. Обратите внимание что к сожалению документация OCC не доступна в Интернете(вы должны скачать архив) и в основном направлена на програмистов, а не на конечных пользоваетелей. Но надеемся что вы найдете здесь достаточно информации, что бы стартовать от этого.

Геометрические типы на самом деле можно разделить на две основные группы: кривые и поверхности. Из кривых (линия, окружность, ...) вы непосредственно можете строить ребра, из поверхностей (плоскость, цилиндр, ...) могут быть построены грани. Например, такой геометрический примитив как линия - бесконечен, т.е. он задается только вектором направления в то время, как его форма должна быть представлено чем-то ограниченым обладающим начальной и конечной точкой. Также и box -- твердое тело -- которое может быть создано из шести ограниченых плоскостей.

От ребра или грани, вы также можете вернутся к геометрическим примитивам из которых они состоят.

Таким образом, из форм вы можете построить очень сложные детали или, или наоборот, извлечь все субформы из созданой сложной формы.

Написание сценариев
Основным структурой данных в модуле Деталей является BRep тип данных из OpenCascade. Все содержащиеся в модуле Деталей типы объектов и функции доступны в сценариях на python. Это включает в себя геометрические примитивы, такие как Линия[Line] и Окружность[Circle] (или Дуга[Arc]), и целый ряд TopoShapes, таких как Вершины[Vertexes], Ребра[Edges], Сетки[Wires], Грани[Faces], Тела[Solids] и Составные объекты[Compounds]. Каждый из этих объектов, можно создать несколькими способами, и для некоторых из них особенно для TopoShapes, существуют продвинутые операции например логическое сложение/вычитание/пересечение которые также доступны. Чтобы знать больше изучите содержание модуля Деталей, описанное на странице Основы написания сценариев в FreeCAD.

Примеры
Чтобы создать элемент - линию перейдите в консоль Python и введите: import Part,PartGui doc=App.newDocument l=Part.Line l.StartPoint=(0.0,0.0,0.0) l.EndPoint=(1.0,1.0,1.0) doc.addObject("Part::Feature","Line").Shape=l.toShape doc.recompute

Давайте по подробней, по шагам рассмотрим пример выше: import Part,PartGui doc=App.newDocument загружает модуль деталей и создает новый документ l=Part.Line l.StartPoint=(0.0,0.0,0.0) l.EndPoint=(1.0,1.0,1.0) Линия на самом деле - отрезок, следовательно задаем начальную и конечную точку. doc.addObject("Part::Feature","Line").Shape=l.toShape Это добавляет объект типа Деталь[Part] в документ и назначает форму представления отрезка в свойстве 'Shape' добавленного объекта. Важно понять, здесь мы использовали геометрический примитив (the Part.line) чтобы создать TopoShape в конце (используя toShape метод). Только Формы могут быть добавлены в документ. В FreeCAD, геометрические примитивы используются как "строительные конструкций" для Форм. doc.recompute Обновили документ. Это также должно полготовить визуальное представление нового объекта-Детали.

Заметим что Линия[Line] может быть создана специфическим способом, заданием её начальной и конечной точки напрямую, пример Part.Line(point1,point2) или же мы можем задать линию по умолчанию и задать её свойства позже, как мы и сделали здесь.

окружность может быть создана схожим образом: import Part doc = App.activeDocument c = Part.Circle c.Radius=10.0 f = doc.addObject("Part::Feature", "Circle") f.Shape = c.toShape doc.recompute Опять же заметим, мы использовали окружность (геометрический примитив) чтобы создать из неё форму. Конечно мы можем получить доступ к нашей строительной геометрии потом, выполнив: s = f.Shape e = s.Edges[0] c = e.Curve Здесь мы извлекаем форму нашего объекта f, долее забираем выводим список ребер, в нашем случае будет только одна, потому что мы создали форму из одного оеружности, поэтому мы получим только одну запись в списке ребер, и мы выводим кривую. Каждое ребро это кривая, которая является геометрическим примитивом на котором оно основано.

Читайте главу Topological data scripting/ru если хотите знать больше.