Part Module/ru: Difference between revisions
(Created page with "Другой простой объект, используемый в плоских геометрических объектах, это Part Part2DObject/ru|Part Part2DOb...") |
(Redirected.) Tag: New redirect |
||
(214 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
#REDIRECT [[Part_Workbench/ru]] |
|||
<languages/> |
|||
{{Docnav/ru |
|||
|[[OpenSCAD Module/ru|Модуль OpenSCAD]] |
|||
|[[PartDesign Workbench/ru|Верстак PartDesign]] |
|||
|IconL=Workbench_OpenSCAD.svg |
|||
|IconR=Workbench_PartDesign.svg |
|||
}} |
|||
[[Image:Workbench_Part.svg|thumb|128px|Part workbench icon]] |
|||
{{TOCright}} |
|||
== Введение == |
|||
Возможности твердотельного моделирования FreeCAD базируются на ядре [http://ru.wikipedia.org/wiki/Open_CASCADE Open Cascade Technology] (OCCT), системе САПР профессионального качества с возможностями продвинутого создания и манипулирования трёхмерными объектами. [[Image:Workbench_Part.svg|24px]] [[Part Workbench/ru|Верстак Part]] это слой, базирующийся на библиотеках OCCT, дающие пользователям доступ к примитивам и функциям OCCT. Практически все функции двумерного и трёхмерного черчения в каждом верстаке ([[Image:Workbench_Draft.svg|24px]] [[Draft Workbench/ru|Draft]], [[Image:Workbench_Sketcher.svg|24px]] [[Sketcher Workbench/ru|Sketcher]], [[Image:Workbench_PartDesign.svg|24px]] [[PartDesign Workbench/ru|PartDesign]] и т.д.) базируются на этих функциях, предоставляемых верстаком Part. Следовательно, верстак Part считается центральным компонентом возможностей моделирования FreeCAD. |
|||
Объекты, создаваемые верстаком Part относительно просты, они предназначены для использования в булевых операциях (объединения и вырезания) для построения более сложных фигур. '''Эта парадигма моделирования известна как процесс [[constructive solid geometry/ru|конструктивной блочной геометрии]] (CSG, КБГ), и это традиционная методология, используемая в ранних системах САПР.''' С другой стороны, [[PartDesign Workbench/ru|верстак PartDesign]] предлагает более современный процесс создания фигур: он использует параметрически заданные эскизы, которые выдавливаются для формирования базовых твёрдых тел, которые потом модифицируются параметрическими трансформациями ([[feature editing/ru|редактирования свойств]]) до получения конечного объекта. |
|||
Объекты Part сложнее, чем сеточные объекты, создаваемые в [[Mesh Workbench/ru|верстаке Mesh]], поскольку они дают более сложные операции вроде когерентных булевых операций, историю модификации и параметрическое поведение. |
|||
[[Image:Part_Workbench_relationships.svg|600px]] |
|||
{{Caption|Верстак Part Workbench это базовый слой, предоставляющий чертёжные функции OCCT всем верстакам FreeCAD}} |
|||
== Инструменты == |
|||
Инструменты модуля деталей расположены в меню {{MenuCommand|Деталь}}. |
|||
===Примитивы=== |
|||
Эти инструменты создают примитивные объекты. |
|||
* [[Image:Part_Box.svg|32px]] [[Part_Box/ru|Куб]]: Рисует прямоугольный параллелепипед с указанными размерами |
|||
* [[Image:Part_Cylinder.svg|32px]] [[Part_Cylinder/ru|Цилиндр]]: Рисует цилиндр с указанными размерами |
|||
* [[Image:Part_Sphere.svg|32px]] [[Part_Sphere/ru|Сфера]]: Рисует сферу с указанными размерами |
|||
* [[Image:Part_Cone.svg|32px]] [[Part_Cone/ru|Конус]]: Рисует конус с указанными размерами |
|||
* [[Image:Part_Torus.svg|32px]] [[Part_Torus/ru|Тор]]: Рисует тор (кольцо) с указанными размерами |
|||
* [[Image:Part_Primitives.svg|32px]] [[Part_Primitives/ru|Создать примитивы]]: Инструмент добавления любого из определённых геометрических примитивов |
|||
* [[Image:Part_Shapebuilder.svg|32px]] [[Part_Builder/ru|Построитель форм]]: Инструмент создания более сложных форм из различных параметрических геометрических примитивов |
|||
===Изменение объектов=== |
|||
Это инструменты для изменения существующих объектов. Они позволяют вам выбирать, какой объект вы будете изменять. |
|||
* [[Image:Part_Extrude.svg|32px]] [[Part_Extrude/ru|Выдавить]]: Вытягивает плоские грани объекта |
|||
* [[Image:Part_Revolve.svg|32px]] [[Part_Revolve/ru|Вращать]]: Создает объект вращением одного объекта вокруг оси |
|||
* [[Image:Part_Mirror.svg|32px]] [[Part_Mirror/ru|Зеркальное отражение]]: Отражает выбранные объекты на данной зеркальной плоскости |
|||
* [[Image:Part_Fillet.svg|32px]] [[Part_Fillet/ru|Скругление]]: Скругляет ребра объекта |
|||
* [[Image:Part_Chamfer.svg|32px]] [[Part_Chamfer/ru|Фаска]]: Делает фаску на гранях объектов |
|||
* [[Image:Part_RuledSurface.svg|32px]] [[Part_RuledSurface/ru|Создать линейчатую поверхность]]: Этот инструмент создает линейчатую поверхность между двумя линиями или краями выбранных выше. |
|||
* [[Image:Part_Loft.svg|32px]] [[Part_Loft/ru|Лофт]]: Выполняет лофтинг от одного профиля к другому |
|||
* [[Image:Part_Sweep.svg|32px]] [[Part_Sweep/ru|Сдвиг]]: Развёртывает один или более профилей вдоль заданной трассы |
|||
* [[Image:Part_CompOffsetTools.png|48px]] [[Part_CompOffsetTools/ru|Offset tools]]: |
|||
** [[Image:Part_Offset.svg|32px]] [[Part_Offset/ru|Смещение]]: Создаёт увеличенную копию оригинального объекта |
|||
** [[Image:Part_Offset2D.svg|32px]] [[Part_Offset2D/ru|2D Offset]]: Создает параллельный провод на определенном расстоянии от оригинала или увеличивает/сжимает плоскую грань. {{Version|0.17}} |
|||
* [[Image:Part_Thickness.svg|32px]] [[Part_Thickness/ru|Толщина]]: Назначает толщину поверхностям формы. |
|||
* [[Image:Part_ProjectionOnSurface.png|32px]] [[Part_ProjectionOnSurface/ru|Projection on surface]]: создаёт проекцию логотипа, текста или любой грани, полилинии, кромки на поверхность. С проекцией можно сделаь твёрдое тело или полилинию. {{Version|0.19}} |
|||
* [[Image:Part_Compound.svg|48px]] [[Part_CompCompoundTools/ru|Compound Tools]]: |
|||
** [[Image:Part_Compound.svg|32px]] [[Part_Compound/ru|Make compound]]: Создаёт объект, соединяющий в себе выбранные объекты. |
|||
** [[Image:Part_ExplodeCompound.svg|32px]] [[Part_ExplodeCompound/ru|Explode Compound]]: Tool to split up compounds of shapes |
|||
** [[Image:Part CompoundFilter.svg|32px]] [[Part CompoundFilter/ru|Compound Filter]]: The CompoundFilter can be used to extract the individual pieces. |
|||
* [[Image:Part_Booleans.svg|32px]] [[Part_Boolean/ru|Boolean]]: Производит булевы операции над объектами |
|||
* [[Image:Part_Fuse.svg|32px]] [[Part_Union/ru|Объединение]]: Сплавляет (объединяет) два объекта |
|||
* [[Image:Part_Common.svg|32px]] [[Part_Common/ru|Пересечение]]: Извлекает общую часть (пересечение) двух объектов |
|||
* [[Image:Part_Cut.svg|32px]] [[Part_Cut/ru| Обрезать]]: Обрезает (вычитает) один объект из другого |
|||
* [[Image:Part_CompJoinFeatures.png|48px]] [[Part CompJoinFeatures/ru|Join features]]: Сложные сопряжения для объектов со стенками (Например, труб) {{Version|0.16}} |
|||
** [[Image:Part_JoinConnect.svg|32px]] [[Part_JoinConnect/ru|Connect]]: Соединяет внутренности объектов {{Version|0.16}} |
|||
** [[Image:Part_JoinEmbed.svg|32px]] [[Part_JoinEmbed/ru|Embed]]: Внедряет объект со стенками внутрь другого такого же объекта {{Version|0.16}} |
|||
** [[Image:Part_JoinCutout.svg|32px]] [[Part_JoinCutout/ru|Cutout]]: Создаёт вырез в стенке объекта для другого объекта со стенками {{Version|0.16}} |
|||
* [[Image:Part_CompSplittingTools.png|48px]] [[Part CompSplittingTools/ru|Splitting tools]]: {{Version|0.17}} |
|||
** [[Image:Part_BooleanFragments.svg|32px]] [[Part_BooleanFragments/ru|Boolean fragments]]:делает все части, которые могут быть получены с помощью логических операций между объектами {{Version|0.17}} |
|||
** [[Image:Part SliceApart.svg|32px]] [[Part_SliceApart/ru|Slice a part]]: инструмент для разделения фигур путем пересечения с другими формами |
|||
** [[Image:Part_Slice.svg|32px]] [[Part_Slice/ru|Slice]]: Разбивает объект на части путем пересечения с другим объектом {{Version|0.17}} |
|||
** [[Image:Part_XOR.svg|32px]] [[Part_XOR/ru|XOR]]: удаляет пространство, разделенное четным числом объектов (симметричная версия [[Part_Cut/ru|Cut]]) {{Version|0.17}} |
|||
* [[Image:Part Defeaturing.svg|32px]] [[Part_Defeaturing/ru|Defeaturing]]: {{Version|0.18}} |
|||
* [[Image:Part_Section.svg|32px]] [[Part_Section/ru|Section]]: Создает сечение, как пересечением секущей плоскости и объекта |
|||
* [[Image:Part_CrossSections.svg|32px]] [[Part_SectionCross/ru|Поперечные сечения...]]: Создаёт одно или более поперечных сечений через выбранную форму |
|||
* [[Image:Part Attachment.svg|32px]] [[Part Attachment/ru|Attachment]]: утилита для прикрепления одного объекта к другому. |
|||
=== Измерение === |
|||
[[File:Std Measure Menu.png|64px]] [[Std Measure Menu/ru|Measure]]: Обеспечивает линейные и угловые измерения между точками, рёбрами и гранями. |
|||
* [[Image:Part_Measure_Linear.svg|32px]] [[Part_Measure_Linear/ru|Measure Linear]] позволяет делать линейные изменения. |
|||
* [[Image:Part_Measure_Angular.svg|32px]] [[Part_Measure_Angular/ru|Measure Angular]] позволяет делать угловые измерения. |
|||
* [[Image:Part_Measure_Refresh.svg|32px]] [[Part_Measure_Refresh/ru|Measure Refresh]] обновляет измерения на экране. |
|||
* [[Image:Part_Measure_Clear_All.svg|32px]] [[Part_Measure_Clear_All/ru|Clear All]] очищает все измерения. |
|||
* [[Image:Part_Measure_Toggle_All.svg|32px]] [[Part_Measure_Toggle_All/ru|Toggle All]] показывает или скрывает все измерения. |
|||
* [[Image:Part_Measure_Toggle_3d.svg|32px]] [[Part_Measure_Toggle_3d/ru|Toggle 3D]] показывает или скрывает трёхмерные измерения. |
|||
* [[Image:Part_Measure_Toggle_Delta.svg|32px]] [[Part_Measure_Toggle_Delta/ru|Toggle Delta]] показывает или скрывает дельта-измерения. |
|||
===Прочие инструменты=== |
|||
* [[Image:Part_Import.svg|32px]] [[Part Import/ru|Импорт]]: Этот инструмент позволяет добавить в текущий документ файл *.IGES, *.STEP, *.BREP. |
|||
* [[Image:Part_Export.svg|32px]] [[Part Export/ru|Экспорт]]: Этот инструмент позволяет экспортировать деталь в формате *.IGES, *.STEP, *.BREP. |
|||
* [[File:Part_BoxSelection.svg|32px]] [[Part_BoxSelection/ru|BoxSelection]]: Добавляет к выделению грани фигур, соприкасающихся с прямоугольным выделением. {{Version|0.19}} |
|||
* [[Image:Part_ShapeFromMesh.svg|32px]] [[Part ShapeFromMesh/ru|Создание формы из сетки]]: Создаёт форму из сетки. |
|||
* [[File:Part_PointsFromMesh.svg|32px]] [[Part PointsFromMesh/ru|Points from mesh]]: Создаёт объект формы из точек сетки. {{Version|0.19}} |
|||
* [[Part ConvertToSolid/ru|Convert to solid]]: Преобразует форму в твердое тело. |
|||
* [[Part ReverseShapes/ru|Обратная фигура]]: Отражает нормали всех граней выбранного объекта. |
|||
* создать копию: |
|||
* [[Image:Part_SimpleCopy.svg|32px]] [[Part CreateSimpleCopy/ru|Создать простую копию]]: Создаёт простую копию выбранного объекта. |
|||
** [[File:Part_TransformedCopy.svg|32px]] [[Part_TransformedCopy/ru|Create transformed copy]]: creates a transformed copy of the selected object. {{Version|0.19}} |
|||
** [[File:Part_ElementCopy.svg|32px]] [[Part_ElementCopy/ru|Create shape element copy]]: creates a copy from an element (vertex, edge, face) of the selected object. {{Version|0.19}} |
|||
* [[Image:Part RefineShape.png|32px]] [[Part RefineShape/ru|Уточнить форму]]: Очищает поверхности удалением ненужных линий. |
|||
* [[Image:Part_CheckGeometry.svg|32px]] [[Part CheckGeometry/ru|Проверка геометрии]]: Проверяет геометрию выбранных объектов на ошибки. |
|||
== Настройки == |
|||
* [[Image:Preferences-import-export.svg|32px]] [[Import_Export_Preference/ru|Предпочтение ...]] Импорт Экспорт |
|||
== Геометрические концепции OCCT == |
|||
В терминологии OpenCascade геометрические примитивы и (топологические) формы различны. Геометрическим примитивом может быть точка, линия, окружность, плоскость и т.д. , или даже более сложные типы, такие как кривая B-сплайна или поверхность. Формой может быть вешина, ребро, сеть , грань, твердое тело или соединение всего этого. Геометрические примитивы не созданы специально для того чтобы отображаться на 3D сцене, они используются в качестве строительной геометрии форм. Для примера, ребро можно построить из линии или же из части окружности. |
|||
В общем, геометрические примитивы это "бесформенные" строительные блоки, а [[Part_TopoShape|топологические формы]] это реальные объекты, построенные на них. |
|||
Полный список всех примитивов и форм находится в [http://www.opencascade.org/org/doc/ документации OCC] в разделах Geom_Geometry и TopoDS_Shape. (Альтернатива: [http://opencascade.sourcearchive.com/documentation/6.3.0.dfsg.1-1/classes.html sourcearchive.com]) и поиск '''Geom_*''' (для геометрических примитивов) и '''TopoDS_*''' (для форм). Также вы больше сможете узнать о различиях между ними. Обратите внимание, что к сожалению документация OCC не доступна в Интернете(вы должны скачать архив) и в основном направлена на программистов, а не на конечных пользователей. Но надеемся, что вы найдете здесь достаточно информации для начала. |
|||
Геометрические типы на самом деле можно разделить на две основные группы: кривые и поверхности. Из кривых (линия, окружность, ...) вы непосредственно можете строить ребра, из поверхностей (плоскость, цилиндр, ...) могут быть построены грани. Например, такой геометрический примитив как линия - бесконечен, т.е. он задается только вектором направления в то время, как его форма должна быть представлено чем-то ограниченым обладающим начальной и конечной точкой. Также и box -- твердое тело -- которое может быть создано из шести ограниченых плоскостей. |
|||
От ребра или грани, вы также можете вернутся к геометрическим примитивам из которых они состоят. |
|||
Таким образом, из форм вы можете построить очень сложные детали или , или наоборот, извлечь все субформы из созданой сложной формы. |
|||
[[File:Part_TopoShape_relationships.svg|600px]] |
|||
{{Caption|Класс {{incode|Part::TopoShape}} это видимый на экране геометрический объект. Практически все верстаки используют эти [[Part_TopoShape/ru|TopoShapes]] внутри себя для построения и показа кромок, граней и твёрдых тел.}} |
|||
== Написание сценариев == |
|||
{{Emphasis|Смотри так же:}} [[Part scripting/ru|Part scripting]] |
|||
Основным структурой данных в модуле Part является [http://en.wikipedia.org/wiki/Boundary_representation BRep] тип данных из OpenCascade. |
|||
Все содержащиеся в модуле Part типы объектов и функции доступны в сценариях на [[Python/ru|Python]]. Это включает в себя геометрические примитивы, такие как Линия и Окружность (или Дуга), и целый ряд топологических фигур, таких как Вершины, Ребра, Полилинии, Грани, Тела и Составные объекты. Каждый из этих объектов можно создать несколькими способами, и для некоторых из них, особенно для топологических фигур, продвинутые операции, например булево сложение/вычитание/пересечение, так же доступны. Чтобы знать больше, изучите содержание модуля Part, описанное на странице [[FreeCAD Scripting Basics/ru|Основы написания сценариев в FreeCAD]] . |
|||
Самый базовый объект, который можно создать, это [[Feature Feature/ru|Part Feature]], имеющий простое свойство размещения {{PropertyData|Placement}} и базовые свойства определения его цвета и внешнего вида. |
|||
Другой простой объект, используемый в плоских геометрических объектах, это [[Part Part2DObject/ru|Part Part2DObject]], являющийся основой [[Sketcher_SketchObject/ru|Sketcher SketchObject]] ([[Sketcher Workbench/ru|модуль Sketcher]]) и большинства [[Draft Workbench/ru|элементов модуля Draft]]. |
|||
=== Тестовый скрипт === |
|||
Test the creation of [[Part_Primitives|Part Primitives]] with a script. {{Version|0.19}} |
|||
{{Code|code= |
|||
import parttests.part_test_objects as pto |
|||
pto.create_test_file("example_file") |
|||
}} |
|||
This script is located in the installation directory of the program, and can be examined to see how the basic primitives are built. |
|||
{{Code|code= |
|||
$INSTALL_DIR/Mod/Part/parttests/part_test_objects.py |
|||
}} |
|||
=== Примеры === |
|||
Чтобы создать элемент - линию перейдите в консоль Python и введите: |
|||
{{Code|code= |
|||
import Part,PartGui |
|||
doc=App.newDocument() |
|||
l=Part.LineSegment() |
|||
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() |
|||
}} |
|||
Давайте по подробней, по шагам рассмотрим пример выше: |
|||
{{Code|code= |
|||
import Part,PartGui |
|||
doc=App.newDocument() |
|||
}} |
|||
загружает модуль деталей и создает новый документ |
|||
{{Code|code= |
|||
l=Part.LineSegment() |
|||
l.StartPoint=(0.0,0.0,0.0) |
|||
l.EndPoint=(1.0,1.0,1.0) |
|||
}} |
|||
Линия на самом деле - отрезок, следовательно задаем начальную и конечную точку. |
|||
{{Code|code= |
|||
doc.addObject("Part::Feature","Line").Shape=l.toShape() |
|||
}} |
|||
Это добавляет объект типа Деталь[Part] в документ и назначает форму представления отрезка в свойстве 'Shape' добавленного объекта. Важно понять, здесь мы использовали геометрический примитив (the Part.lineSegment) чтобы создать TopoShape в конце (используя toShape() метод). Только Формы могут быть добавлены в документ. В FreeCAD, геометрические примитивы используются как "строительные конструкций" для Форм. |
|||
{{Code|code= |
|||
doc.recompute() |
|||
}} |
|||
Обновили документ. Это также должно полготовить визуальное представление нового объекта-Детали. |
|||
Заметим что Линия[Line] Segment может быть создана специфическим способом, заданием её начальной и конечной точки напрямую, пример Part.LineSegment(point1,point2) или же мы можем задать линию по умолчанию и задать её свойства позже, как мы и сделали здесь. |
|||
A Line can be created also using: |
|||
{{Code|code= |
|||
import FreeCAD |
|||
import Part |
|||
DOC = FreeCAD.newDocument() |
|||
def mycreateLine(pt1, pt2, objName): |
|||
obj = DOC.addObject("Part::Line", objName) |
|||
obj.X1 = pt1[0] |
|||
obj.Y1 = pt1[2] |
|||
obj.Z1 = pt1[2] |
|||
obj.X2 = pt2[0] |
|||
obj.Y2 = pt2[1] |
|||
obj.Z2 = pt2[2] |
|||
DOC.recompute() |
|||
return obj |
|||
line = mycreateLine((0,0,0), (0,10,0), "LineName") |
|||
}} |
|||
окружность может быть создана схожим образом: |
|||
{{Code|code= |
|||
import Part |
|||
doc = App.activeDocument() |
|||
c = Part.Circle() |
|||
c.Radius=10.0 |
|||
f = doc.addObject("Part::Feature", "Circle") |
|||
f.Shape = c.toShape() |
|||
doc.recompute() |
|||
}} |
|||
or using: |
|||
{{Code|code= |
|||
import FreeCAD |
|||
import Part |
|||
DOC = FreeCAD.newDocument() |
|||
def mycreateCircle(rad, objName): |
|||
obj = DOC.addObject("Part::Circle", objName) |
|||
obj.Radius = rad |
|||
DOC.recompute() |
|||
return obj |
|||
circle = mycreateCircle(5.0, "CircleName") |
|||
}} |
|||
Опять же заметим, мы использовали окружность (геометрический примитив) чтобы создать из неё форму. Конечно мы можем получить доступ к нашей строительной геометрии потом, выполнив: |
|||
{{Code|code= |
|||
s = f.Shape |
|||
e = s.Edges[0] |
|||
c = e.Curve |
|||
}} |
|||
Здесь мы извлекаем форму нашего объекта f, долее забираем выводим список ребер, в нашем случае будет только одна, потому что мы создали форму из одного оеружности, поэтому мы получим только одну запись в списке ребер, и мы выводим кривую. Каждое ребро это кривая, которая является геометрическим примитивом на котором оно основано. |
|||
Читайте главу [[Topological data scripting/ru|Topological data scripting]] чтобы узнать больше. |
|||
== Учебники == |
|||
* [[Import_from_STL_or_OBJ/ru|Импорт из STL или OBJ]] : Как импортировать файлы STL/OBJ в FreeCAD |
|||
* [[Export_to_STL_or_OBJ/ru|Экспорт в STL или OBJ]] : Как экспортировать в FreeCAD файлы STL/OBJ |
|||
* [[Whiffle_Ball_tutorial/ru|Whiffle Ball tutorial]] : Как использовать модуль Part |
|||
{{Docnav/ru |
|||
|[[OpenSCAD Module/ru|Модуль OpenSCAD]] |
|||
|[[PartDesign Workbench/ru|Верстак PartDesign]] |
|||
|IconL=Workbench_OpenSCAD.svg |
|||
|IconR=Workbench_PartDesign.svg |
|||
}} |
|||
{{Userdocnavi{{#translation:}}}} |
|||
{{Part Tools navi{{#translation:}}}} |
|||
[[Category:Workbenches{{#translation:}}]] |
Latest revision as of 14:58, 27 April 2024
Redirect to: