FreeCAD Logo FreeCAD 1.0
  • Английский Африкаанс Арабский Белорусский Каталанский Чешский Немецкий Греческий Испанский Испанский Баскский Финский Филиппинский Французский Галисийский Хорватский Венгерский Индонезийский Итальянский Японский Кабильский Корейский Литовский Нидерландский Норвежская букмол Польский Португальский Португальский Румынский Русский Словацкий Словенский Сербский Шведский Турецкий Украинский Валенсианский Вьетнамский Китайский Китайский
  • Возможности
  • Скачать
  • Блог
  • Документация
    Индекс документации Приступая к работе Пользовательская документация Руководство по FreeCAD Документация верстаков Документация по кодированию на Python Документация по коду C++ Уроки Часто задаваемые вопросы Политика конфиденциальности О программе FreeCAD
  • Внести вклад
    Как помочь Sponsor Сообщить об ошибке Сделать запрос Задачи и финансирование Руководство по участию в разработке Руководство для разработчиков Переводы
  • Сообщество
    Кодекс поведения Форум The FPA GitHub GitLab Codeberg Mastodon Matrix IRC IRC via Webchat Gitter Discord Reddit Twitter Facebook LinkedIn Календарь
  • ♥ Donate

Donate

$
Информация о SEPA
Пожалуйста, настройте банковский перевод SEPA:
Beneficiary: The FreeCAD project association
IBAN: BE04 0019 2896 4531
BIC/SWIFT: GEBABEBBXXX
Банковское агентство: BNP Paribas Fortis
Адрес: Rue de la Station 64, 1360 Perwez, Belgium

While Stripe doesn't support monthly donations, you can still become a sponsor! Simply make a one-time donation equivalent to 12 months of support, and you'll gain access to the corresponding sponsoring tier. It's an easy and flexible way to contribute.

If you are not sure or not able to commit to a regular donation, but still want to help the project, you can do a one-time donation, of any amount.

Choose freely the amount you wish to donate one time only.

You can support FreeCAD by sponsoring it as an individual or organization through various platforms. Sponsorship provides a steady income for developers, allowing the FPA to plan ahead and enabling greater investment in FreeCAD. To encourage sponsorship, we offer different tiers, and unless you choose to remain anonymous, your name or company logo will be featured on our website accordingly.

from 1 USD / 1 EUR per month. You will not have your name displayed here, but you will have helped the project a lot anyway. Together, normal sponsors maintain the project on its feet as much as the bigger sponsors.

from 25 USD / 25 EUR per month. Your name or company name is displayed on this page.

from 100 USD / 100 EUR per month. Your name or company name is displayed on this page, with a link to your website, and a one-line description text.

from 200 USD / 200 EUR per month. Your name or company name and logo displayed on this page, with a link to your website and a custom description text. Companies that have helped FreeCAD early on also appear under Gold sponsors.

Instead of donating each month, you might find it more comfortable to make a one-time donation that, when divided by twelve, would give you right to enter a sponsoring tier. Don't hesitate to do so!

Choose freely the amount you wish to donate each month.

Please inform your forum name or twitter handle as a notein your transfer, or reach to us, so we can give you proper credits!

Основы работы со скриптами FreeCAD
Программирование топологических данных
Оглавление

Введение

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

Самый простой объект, который можно создать, - это Конструктивный элемент (Feature), который имеет простое свойство ДАННЫЕРазмещение (Placement) и основные свойства для определения его цвета и внешнего вида.

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

Смотрите также

  • Программирование топологических данных
  • OpenCASCADE

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

Тест выполнения команды Создать примитивы с помощью скрипта.

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

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

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

Примеры

Линия

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

import FreeCAD as App
import Part

doc = App.newDocument()

line = Part.LineSegment()
line.StartPoint = (0.0, 0.0, 0.0)
line.EndPoint = (1.0, 1.0, 1.0)
obj = doc.addObject("Part::Feature", "Line")
obj.Shape= line.toShape()

doc.recompute()

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

import FreeCAD as App
import Part
doc = App.newDocument()

Это загружает модули FreeCAD и Part и создаёт новый документ.

line = Part.LineSegment()
line.StartPoint = (0.0, 0.0, 0.0)
line.EndPoint = (1.0, 1.0, 1.0)

Линия на самом деле является линейным сегментом, поэтому у неё есть начальная и конечная точки.

obj = doc.addObject("Part::Feature", "Line")
obj.Shape= line.toShape()

Это добавляет объект типа Part в документ и назначает представление формы линейного сегмента свойству Shape добавленного объекта. Здесь важно понимать, что мы используем геометрический примитив (Part.LineSegment), чтобы создать из него TopoShape (с помощью метода toShape()). В документ можно добавлять только фигуры. В FreeCAD геометрические примитивы используются как строительные конструкции для фигур.

doc.recompute()

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

Обратите внимание, что отрезок линии также можно создать, указав его начало и конец непосредственно в конструкторе, например Part.LineSegment(point1, point2), или мы можем создать линию по умолчанию и задать её свойства после этого, как мы сделали это здесь.

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

import FreeCAD as App
import Part

def my_create_line(pt1, pt2, obj_name):
    obj = App.ActiveDocument.addObject("Part::Line", obj_name)
    obj.X1 = pt1[0]
    obj.Y1 = pt1[1]
    obj.Z1 = pt1[2]

    obj.X2 = pt2[0]
    obj.Y2 = pt2[1]
    obj.Z2 = pt2[2]

    App.ActiveDocument.recompute()
    return obj

line = my_create_line((0, 0, 0), (0, 10, 0), "LineName")

Окружность

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

import FreeCAD as App
import Part

doc = App.activeDocument()

circle = Part.Circle() 
circle.Radius = 10.0  
obj = doc.addObject("Part::Feature", "Circle")
obj.Shape = circle.toShape()

doc.recompute()

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

import FreeCAD as App
import Part

def my_create_circle(rad, obj_name):
    obj = App.ActiveDocument.addObject("Part::Circle", obj_name)
    obj.Radius = rad

    App.ActiveDocument.recompute()
    return obj

circle = my_create_circle(5.0, "CircleName")

Как вариант, мы можем создать круг, определив его центр, ось и радиус:

import FreeCAD as App
import Part

doc = App.activeDocument()

center = App.Vector(1, 2, 3)
axis = App.Vector(1, 1, 1)
radius = 10
circle = Part.Circle(center, axis, radius)
obj = doc.addObject("Part::Feature", "Circle")
obj.Shape = circle.toShape()

doc.recompute()

Или определив три точки на её периметре:

import FreeCAD as App
import Part

doc = App.activeDocument()

p1 = App.Vector(10, 0, 0)
p2 = App.Vector(0, 10, 0)
p3 = App.Vector(0, 0, 10)
circle = Part.Circle(p1, p2, p3)
obj = doc.addObject("Part::Feature", "Circle")
obj.Shape = circle.toShape()

doc.recompute()

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

shape = obj.Shape
edge = shape.Edges[0]
curve = edge.Curve

Здесь мы берём Shape нашего объекта obj, а затем его перечень Edges. В данном случае будет только одно ребро, потому что мы сделали фигуру из единственного круга. Поэтому мы берём только первый элемент в списке Edges, а затем берём его кривую. У каждого ребра есть Curve, это геометрический примитив, на котором оно основывается.

Дуга

Дуга может быть создана следующим образом:

import FreeCAD as App
import Part

doc = App.activeDocument()

p1 = App.Vector(10, 0, 0)
p2 = App.Vector(0, 10, 0)
p3 = App.Vector(-10, 0, 0)
arc = Part.Arc(p1, p2, p3)
obj = doc.addObject("Part::Feature", "Arc")
obj.Shape = arc.toShape()

doc.recompute()

Это рисует полуокружность. Центр находится в точке (0, 0, 0). Радиус равен 10. P1 - начальная точка на оси +X. P2 - средняя точка на оси +Y, а P3 - конечная точка на оси -X.

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

import FreeCAD as App
import Part

doc = App.activeDocument()

p1 = App.Vector(10, 0, 0)
p2 = App.Vector(0, 10, 0)
p3 = App.Vector(-10, 0, 0)
circle = Part.Circle(p1, p2, p3)
arc = Part.ArcOfCircle(circle, 0.0, 0.7854)
obj = doc.addObject("Part::Feature", "Arc")
obj.Shape = arc.toShape()

doc.recompute()

Здесь требуется окружность, начальный и конечный углы в радианах.


Основы работы со скриптами FreeCAD
Программирование топологических данных
Оглавление

Эта страница получена от https://wiki.freecad.org/Part_scripting

Свяжитесь с нами!
Forum GitHub Mastodon Matrix IRC Gitter.im Discord Reddit Twitter Facebook LinkedIn

©Команда FreeCAD. Авторы изображений (сверху вниз): ppemawm, r-frank, epileftric, regis, regis, rider_mortagnais, bejant.

Этот проект поддерживается: , KiCad Services Corp. и другие спонсоры

GitHubУлучшить эту страницу на GitHub