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 если хотите знать больше.