Part Module/ru



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

The Part Workbench allows the user to access and use the OCCT objects and functions. Part objects, unlike Mesh objects, are more complex, and therefore permit more advanced operations like coherent boolean operations, modifications history, and parametric behaviour.



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

These are tools for creating primitive objects.


 * [[Image:Part_Box.png|32px]] Box: Draws a box by specifying its dimensions
 * [[Image:Part_Cone.png|32px]] Cone: Draws a cone by specifying its dimensions
 * [[Image:Part_Cylinder.png|32px]] Cylinder: Draws a cylinder by specifying its dimensions
 * [[Image:Part_Sphere.png|32px]] Sphere: Draws a sphere by specifying its dimensions
 * [[Image:Part_Torus.png|32px]] Torus: Draws a torus (ring) by specifying its dimensions
 * [[Image:Part_CreatePrimitives.png|32px]] CreatePrimitives: A tool to create various parametric geometric primitives
 * [[Image:Part_Shapebuilder.png|32px]] Shapebuilder: A tool to create more complex shapes from various parametric geometric primitives

Modifying objects
These are tools for modifying existing objects. They will allow you to choose which object to modify.


 * [[Image:Part_Extrude.png|32px]] Extrude: Extrudes planar faces of an object
 * [[Image:Part_Revolve.png|32px]] Revolve: Creates a solid by revolving another object (not solid) around an axis
 * [[Image:Part_Mirror.png|32px]] Mirror: Mirrors the selected object on a given mirror plane
 * [[Image:Part_Fillet.png|32px]] Fillet: Fillets (rounds) edges of an object
 * [[Image:Part_Chamfer.png|32px]] Chamfer: Chamfers edges of an object
 * [[Image:Part_RuledSurface.png|32px]] Ruled Surface:
 * [[Image:Part_Loft.png|32px]] Loft: Lofts from one profile to another
 * [[Image:Part_Sweep.png|32px]] Sweep: Sweeps one or more profiles along a path


 * [[Image:Part_CompOffsetTools.png|48px]] Offset tools:
 * [[Image:Part_Offset.png|32px]] 3D Offset: Constructs a parallel shape at a certain distance from original.
 * [[Image:Part_Offset2D.png|32px]] 2D Offset: Constructs a parallel wire at certain distance from original, or enlarges/shrinks a planar face. (v0.17)


 * [[Image:Part_Thickness.png|32px]] Thickness: Hollows out a solid, leaving openings next to select faces.


 * [[Image:Part_CompCompoundTools.png|48px]] Compound Tools:
 * [[Image:Part MakeCompound.png|32px]] Make compound: Creates a compound from the selected objects.
 * [[Image:Part_ExplodeCompound.svg|32px]] Explode Compound: Tool to split up compounds of shapes
 * [[Image:Part Compound‏‎Filter.png|32px]] Compound Filter: The CompoundFilter can be used to extract the individual pieces.


 * [[Image:Part_Booleans.png|32px]] Booleans: Performs boolean operations on objects
 * [[Image:Part_Union.png|32px]] Union: Fuses (unions) two objects
 * [[Image:Part_Common.png|32px]] Common: Extracts the common (intersection) part of two objects
 * [[Image:Part_Cut.png|32px]] Cut: Cuts (subtracts) one object from another


 * [[Image:Part_CompJoinFeatures.png|48px]] Join features: smart booleans for walled objects (e.g., pipes) (v0.16)
 * [[Image:Part JoinConnect.png|32px]] Connect: Connects interiors of objects (v0.16)
 * [[Image:Part JoinEmbed.png|32px]] Embed: Embeds a walled object into another walled object (v0.16)
 * [[Image:Part JoinCutout.png|32px]] Cutout: Creates a cutout in a wall of an object for another walled object (v0.16)


 * [[Image:Part_CompSplittingTools.png|48px]] Splitting tools: (v0.17)
 * [[Image:Part BooleanFragments.png|32px]] Boolean fragments: makes all the pieces that can be obtained by Boolean operations between objects (v0.17)
 * [[Image:Part SliceApart.svg|32px]] Slice a part: tool to split shapes by intersection with other shapes
 * [[Image:Part Slice.png|32px]] Slice: Splits an object into pieces by intersections with another object (v0.17)
 * [[Image:Part XOR.png|32px]] XOR: removes space shared by even number of objects (symmetric version of Cut) (v0.17)


 * [[Image:Part Defeaturing.svg|32px]] Defeaturing: (v0.18)
 * [[Image:Part_Section.png|32px]] Section: Creates a section by intersecting an object with a section plane
 * [[Image:Part_SectionCross.png|32px]] Cross sections...:

Other tools

 * [[Image:Part ImportCAD.png|32px]] Import CAD: This tool allows you to add a file *.IGES, *.STEP, *.BREP to the current document.
 * [[Image:Part ExportCAD.png|32px]] Export CAD: This tool allows you to export a part object in a *.IGES, *.STEP, *.BREP file.
 * [[Image:Part ShapeFromMesh.png|32px]] Shape from Mesh: Creates a shape object from a mesh object.
 * Convert to solid: Converts a shape object to a solid object.
 * Reverse shapes: Flips the normals of all faces of the selected object.
 * [[Image:Part CreateSimpleCopy‎.svg|32px]] Create simple copy: Creates a simple copy of the selected object.
 * [[Image:Part RefineShape.png|32px]] Refine shape: Cleans faces by removing unnecessary lines.
 * [[Image:Part CheckGeometry.png|32px]] Check geometry: Checks the geometry of selected objects for errors.
 * Measure: Allows linear and angular measurement between points/edges/faces.
 * [[Image:Part Attachment.svg|32px]] Attachment: Attachment is a utility to attach an object to another one.



Preferences

 * [[Image:Preferences-import-export.svg|32px]] Preference ... Import Export

Объяснение концепции
В терминологии 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 и введите:

Давайте по подробней, по шагам рассмотрим пример выше:

загружает модуль деталей и создает новый документ

Линия на самом деле - отрезок, следовательно задаем начальную и конечную точку.

Это добавляет объект типа Деталь[Part] в документ и назначает форму представления отрезка в свойстве 'Shape' добавленного объекта. Важно понять, здесь мы использовали геометрический примитив (the Part.line) чтобы создать TopoShape в конце (используя toShape метод). Только Формы могут быть добавлены в документ. В FreeCAD, геометрические примитивы используются как "строительные конструкций" для Форм.

Обновили документ. Это также должно полготовить визуальное представление нового объекта-Детали.

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

окружность может быть создана схожим образом:

Опять же заметим, мы использовали окружность (геометрический примитив) чтобы создать из неё форму. Конечно мы можем получить доступ к нашей строительной геометрии потом, выполнив:

Здесь мы извлекаем форму нашего объекта f, долее забираем выводим список ребер, в нашем случае будет только одна, потому что мы создали форму из одного оеружности, поэтому мы получим только одну запись в списке ребер, и мы выводим кривую. Каждое ребро это кривая, которая является геометрическим примитивом на котором оно основано.

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

Учебники

 * Импорт из STL или OBJ : Как импортировать файлы STL/OBJ в FreeCAD
 * Экспорт в STL или OBJ : Как экспортировать в FreeCAD файлы STL/OBJ
 * Whiffle Ball tutorial : Как использовать модуль Part