Модуль Part

From FreeCAD Documentation
Revision as of 19:47, 27 July 2020 by FuzzyBot (talk | contribs) (Updating to match new version of source page)
Part workbench icon

Введение

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

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

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

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

Инструменты

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

Примитивы

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

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

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

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

  • Выдавить: Вытягивает плоские грани объекта
  • Вращать: Создает объект вращением одного объекта вокруг оси
  • Зеркальное отражение: Отражает выбранные объекты на данной зеркальной плоскости
  • Скругление: Скругляет ребра объекта
  • Фаска: Делает фаску на гранях объектов
  • Создать линейчатую поверхность: Этот инструмент создает линейчатую поверхность между двумя линиями или краями выбранных выше.
  • Лофт: Выполняет лофтинг от одного профиля к другому
  • Сдвиг: Развёртывает один или более профилей вдоль заданной трассы
  • Толщина: Назначает толщину поверхностям формы.
  • Projection on surface: создаёт проекцию логотипа, текста или любой грани, полилинии, кромки на поверхность. С проекцией можно сделаь твёрдое тело или полилинию. introduced in version 0.19
  • Boolean: Производит булевы операции над объектами
  • Объединение: Сплавляет (объединяет) два объекта
  • Пересечение: Извлекает общую часть (пересечение) двух объектов
  • Обрезать: Обрезает (вычитает) один объект из другого

Измерение

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

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

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

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

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


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

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

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

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

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

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

Другой простой объект, используемый в плоских геометрических объектах, это 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 чтобы узнать больше.

Учебники