Part Module

From FreeCAD Documentation
Jump to navigation Jump to search
This page is a translated version of the page Part Module and the translation is 91% complete.
Other languages:
Bahasa Indonesia • ‎Deutsch • ‎English • ‎Türkçe • ‎español • ‎français • ‎hrvatski • ‎italiano • ‎polski • ‎português • ‎português do Brasil • ‎română • ‎svenska • ‎čeština • ‎русский • ‎українська • ‎中文 • ‎中文(中国大陆)‎ • ‎中文(台灣)‎ • ‎日本語
Part workbench icon

Введение

Возможности твердотельного моделирования FreeCAD базируются на ядре Open Cascade Technology (OCCT), системе САПР профессионального качества с возможностями продвинутого создания и манипулирования трёхмерными объектами. Workbench Part.svg Верстак Part это слой, базирующийся на библиотеках OCCT, дающие пользователям доступ к примитивам и функциям OCCT. Практически все функции двумерного и трёхмерного черчения в каждом верстаке (Workbench Draft.svg Draft, Workbench Sketcher.svg Sketcher, Workbench PartDesign.svg PartDesign и т.д.) базируются на этих функциях, предоставляемых верстаком Part. Следовательно, верстак Part считается центральным компонентом возможностей моделирования FreeCAD.

Объекты, создаваемые верстаком Part относительно просты, они предназначены для использования в булевых операциях (объединения и вырезания) для построения более сложных фигур. Эта парадигма моделирования известна как процесс конструктивной блочной геометрии (CSG, КБГ), и это традиционная методология, используемая в ранних системах САПР. С другой стороны, верстак PartDesign предлагает более современный процесс создания фигур: он использует параметрически заданные эскизы, которые выдавливаются для формирования базовых твёрдых тел, которые потом модифицируются параметрическими трансформациями (редактирования свойств) до получения конечного объекта.

Объекты Part сложнее, чем сеточные объекты, создаваемые в верстаке Mesh, поскольку они дают более сложные операции вроде когерентных булевых операций, историю модификации и параметрическое поведение.

Part Workbench relationships.svg

Верстак Part Workbench это базовый слой, предоставляющий чертёжные функции OCCT всем верстакам FreeCAD


Инструменты

Инструменты модуля деталей расположены в меню Деталь.

Примитивы

Эти инструменты создают примитивные объекты.

  • Part Box.svg Куб: Рисует прямоугольный параллелепипед с указанными размерами
  • Part Cylinder.svg Цилиндр: Рисует цилиндр с указанными размерами
  • Part Sphere.svg Сфера: Рисует сферу с указанными размерами
  • Part Cone.svg Конус: Рисует конус с указанными размерами
  • Part Torus.svg Тор: Рисует тор (кольцо) с указанными размерами
  • Part Primitives.svg Создать примитивы: Инструмент добавления любого из определённых геометрических примитивов
  • Part Shapebuilder.svg Построитель форм: Инструмент создания более сложных форм из различных параметрических геометрических примитивов

Изменение объектов

Это инструменты для изменения существующих объектов. Они позволяют вам выбирать, какой объект вы будете изменять.

  • Part Extrude.svg Выдавить: Вытягивает плоские грани объекта
  • Part Revolve.svg Вращать: Создает объект вращением одного объекта вокруг оси
  • Part Mirror.svg Зеркальное отражение: Отражает выбранные объекты на данной зеркальной плоскости
  • Part Fillet.svg Скругление: Скругляет ребра объекта
  • Part Chamfer.svg Фаска: Делает фаску на гранях объектов
  • Part RuledSurface.svg Создать линейчатую поверхность: Этот инструмент создает линейчатую поверхность между двумя линиями или краями выбранных выше.
  • Part Loft.svg Лофт: Выполняет лофтинг от одного профиля к другому
  • Part Sweep.svg Сдвиг: Развёртывает один или более профилей вдоль заданной трассы
  • Part Thickness.svg Толщина: Назначает толщину поверхностям формы.
  • Part ProjectionOnSurface.png Projection on surface: создаёт проекцию логотипа, текста или любой грани, полилинии, кромки на поверхность. С проекцией можно сделаь твёрдое тело или полилинию. introduced in version 0.19
  • Part Booleans.svg Boolean: Производит булевы операции над объектами
  • Part Fuse.svg Объединение: Сплавляет (объединяет) два объекта
  • Part Common.svg Пересечение: Извлекает общую часть (пересечение) двух объектов
  • Part Cut.svg Обрезать: Обрезает (вычитает) один объект из другого

Измерение

Std Measure Menu.png Measure: Обеспечивает линейные и угловые измерения между точками, рёбрами и гранями.

  • Part Measure Linear.svg Measure Linear позволяет делать линейные изменения.
  • Part Measure Angular.svg Measure Angular позволяет делать угловые измерения.
  • Part Measure Refresh.svg Measure Refresh обновляет измерения на экране.
  • Part Measure Clear All.svg Clear All очищает все измерения.
  • Part Measure Toggle All.svg Toggle All показывает или скрывает все измерения.
  • Part Measure Toggle 3d.svg Toggle 3D показывает или скрывает трёхмерные измерения.
  • Part Measure Toggle Delta.svg Toggle Delta показывает или скрывает дельта-измерения.

Прочие инструменты

Настройки

Геометрические концепции OCCT

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

В общем, геометрические примитивы это "бесформенные" строительные блоки, а топологические формы это реальные объекты, построенные на них.

Полный список всех примитивов и форм находится в документации OCC в разделах Geom_Geometry и TopoDS_Shape. (Альтернатива: sourcearchive.com) и поиск Geom_* (для геометрических примитивов) и TopoDS_* (для форм). Также вы больше сможете узнать о различиях между ними. Обратите внимание, что к сожалению документация OCC не доступна в Интернете(вы должны скачать архив) и в основном направлена на программистов, а не на конечных пользователей. Но надеемся, что вы найдете здесь достаточно информации для начала. Так же посмотрите Modeling Data User's Guide.

At a very high level, topology tells what pieces an object is made of, and the logical relationships between them. A shape is made of a certain set of faces. A face is bounded by a certain set of edges. Two faces are adjacent if they share a common edge.

Topology alone does not tell you the size, curvature, or 3D locations of any of those pieces. However, each piece of topology does knows about it's underlying geometry. A face knows what surface it lies on. An edge knows what curve it lies on. The geometry knows about curvature and location in space. - Source


Thus, Topology defines the relationship between simple geometric entities, which can be linked together to represent complex shapes. - Modeling Data User's Guide

ClassTopoDS Shape inherit graph.png

Примечание: Только 3 типа топологических объектов имеют геометрические репрезенртации – вершина, ребро и грань (Источник).

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

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


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

Part TopoShape relationships.svg

Класс Part::TopoShape это видимый на экране геометрический объект. Практически все верстаки используют эти TopoShapes внутри себя для построения и показа кромок, граней и твёрдых тел.


Написание сценариев

Смотри так же: Part scripting

Основным структурой данных в модуле Part является BRep тип данных из OpenCascade. Все содержащиеся в модуле Part типы объектов и функции доступны в сценариях на Python. Это включает в себя геометрические примитивы, такие как Линия и Окружность (или Дуга), и целый ряд топологических фигур, таких как Вершины, Ребра, Полилинии, Грани, Тела и Составные объекты. Каждый из этих объектов можно создать несколькими способами, и для некоторых из них, особенно для топологических фигур, продвинутые операции, например булево сложение/вычитание/пересечение, так же доступны. Чтобы знать больше, изучите содержание модуля Part, описанное на странице Основы написания сценариев в FreeCAD .

Самый базовый объект, который можно создать, это Part Feature, имеющий простое свойство размещения DataPlacement и базовые свойства определения его цвета и внешнего вида.

Другой простой объект, используемый в плоских геометрических объектах, это Part Part2DObject, являющийся основой Sketcher SketchObject (модуль Sketcher) и большинства элементов модуля Draft.

Тестовый скрипт

Тест создания примитивов Part с помощью скрипта. introduced in version 0.19

import parttests.part_test_objects as pto
pto.create_test_file("example_file")

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

$INSTALL_DIR/Mod/Part/parttests/part_test_objects.py

Примеры

Чтобы создать элемент - линию перейдите в консоль Python и введите:

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()

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

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()

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

doc.recompute()

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

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

Линия так же может быть создана с помощью:

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")


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

import Part
doc = App.activeDocument()
c = Part.Circle() 
c.Radius=10.0  
f = doc.addObject("Part::Feature", "Circle")
f.Shape = c.toShape()
doc.recompute()

или с помощью:

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")


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

s = f.Shape
e = s.Edges[0]
c = e.Curve

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

Читайте главу Topological data scripting чтобы узнать больше.

Учебники