Jump to content

Руководство: Простое введение

From FreeCAD Documentation
This page is a translated version of the page Manual:A gentle introduction and the translation is 100% complete.

Python (рус.)(англ.) - широко используемый язык программирования с открытым исходным кодом, признанный за свою простоту, универсальность и наглядность. Он часто встраивается в приложения в качестве языка сценариев, и FreeCAD не является исключением. Такая интеграция позволяет пользователям автоматизировать задачи, настраивать рабочие процессы и расширять функциональность программы далеко за пределы её графического интерфейса.

Python обладает рядом преимуществ, которые делают его особенно подходящим для пользователей FreeCAD. Он дружелюбен к новичкам, имеет ясный и интуитивно понятный синтаксис, что делает его простым в изучении даже для людей, не имеющих опыта программирования. Такая доступность особенно важна в сообществе FreeCAD, где многие пользователи являются представителями различных профессий, таких как инженеры, архитекторы и дизайнеры, и не имеют обширных знаний в области программирования.

Кроме того, широкое распространение Python в других приложениях, таких как Blender для 3D-моделирования, Inkscape для векторной графики и GRASS GIS для геопространственного анализа, делает его необходимым навыком для тех, кто хочет расширить свои возможности по написанию скриптов (сценариев). Освоение Python в FreeCAD не только расширит ваши возможности по созданию пользовательских инструментов и макросов, но и позволит получить навыки, которые можно применять в различных программных платформах.

В FreeCAD скрипты Python позволяют тебе:

  • Автоматизировать повторяющиеся задачи, чтобы сэкономить время и уменьшить количество ошибок.
  • Создавать пользовательские параметрические объекты, которые динамически адаптируются к изменениям.
  • Разрабатывать персонализированные макросы и инструменты для конкретных рабочих процессов.
  • Взаимодействовать с интерфейсом прикладного программирования (API) FreeCAD для программного доступа и манипулирования геометрией, сценами и элементами пользовательского интерфейса.

Используя Python, пользователи FreeCAD могут раскрыть весь потенциал программы, превратив её в мощный и гибкий инструмент, отвечающий их уникальным потребностям.

FreeCAD включает в себя расширенную консоль Python, доступную через Вид → Панели → Python Консоль. Этот инструмент позволяет пользователям выполнять операции, выходящие за рамки графического интерфейса, такие как доступ к расширенным функциям, устранение ошибок геометрии и автоматизация задач. Она также регистрирует команды Python для действий в графическом интерфейсе, если включена опция Показывать команды сценария в консоли Python (Правка → Параметры → Python → Macro). Держа консоль открытой, вы можете наблюдать, как код Python разворачивается в процессе работы, предлагая интуитивно понятный способ изучения языка в процессе знакомства с возможностями FreeCAD. Наконец, во FreeCAD есть система макросов, которая позволяет записывать действия для последующего воспроизведения. Эта система также использует консоль Python, просто записывая всё, что в ней делается.


В этой главе мы познакомимся с языком Python в общих чертах. Если вы хотите узнать больше, то в вики-документации FreeCAD есть обширный раздел, посвящённый Python программированию.

Написание кода на Python

В FreeCAD вы можете писать код на Python двумя основными способами: через консоль Python (Вид → Панели → Консоль Python) или с помощью редактора макросов (Макро → Макросы → Создать). Консоль Python позволяет вводить команды по одной за раз, которые выполняются сразу после нажатия кнопки Return, что делает её идеальной для быстрого тестирования или интерактивного исследования. Редактор макросов, с другой стороны, используется для написания и сохранения более сложных скриптов, состоящих из нескольких строк кода. Эти макросы могут быть выполнены как единое целое позже из окна Макросов, предоставляя мощный способ автоматизации повторяющихся задач и расширения функциональности FreeCAD. В этой главе вы сможете использовать оба метода, но настоятельно рекомендуется использовать Консоль Python, так как она немедленно сообщит вам о любых ошибках, допущенных при вводе текста.

Если вы впервые используете Python, прочтите это краткое введение в программирование на Python, прежде чем двигаться дальше, оно разъяснит основные понятия Python.

Манипуляция объектами FreeCAD

Начнём с создания нового пустого документа:

doc = FreeCAD.newDocument()

В консоли Python FreeCAD, как только вы набираете FreeCAD. (слово «FreeCAD», за которым следует точка), появляется окно автозаполнения. Эта функция не только ускоряет рабочий процесс, предлагая доступные команды, но и помогает открыть для себя новые функции и возможности FreeCAD. Каждый пункт в списке содержит подсказку, объясняющую его назначение, что облегчает понимание и изучение доступных функций. Эта функция автозаполнения особенно полезна для новичков, изучающих скриптинг на Python, и для опытных пользователей, эффективно ориентирующихся в обширном API FreeCAD. Уделите время изучению опций в окне автозаполнения - возможно, вы обнаружите команды, которые упростят ваш рабочий процесс или откроют новые возможности.

Набрав FreeCAD.newDocument(), ты создашь новый, пустой документ во FreeCAD, как и при нажатии кнопки Новый документ на панели инструментов. Когда ты выполняешь команду doc = FreeCAD.newDocument(), новый объект документа присваивается переменной doc, что позволяет манипулировать им программно. Используя doc, ты можешь добавлять объекты, изменять свойства или же сохранять документ.

В Python точка (.) используется для обозначения того, что один элемент содержится внутри другого. Например, newDocument - это функция внутри модуля FreeCAD, поэтому мы пишем FreeCAD.newDocument. Появившееся окно автозаполнения показывает всё, что доступно в модуле FreeCAD. Если бы вы набрали точку после newDocument (без добавления круглых скобок), то отобразилось бы всё, что относится к функции newDocument. Это иллюстрирует, как Python организует объекты и доступ к ним и их компонентам. Важно отметить, что круглые скобки обязательны при вызове функции Python, так как они указывают на выполнение функции.

Теперь вернёмся назад в документ. Посмотрим, что мы можем с ним сделать. Введи следующее и изучи доступные варианты:

doc.

В FreeCAD соглашения об именовании команд Python помогут вам понять их назначение:

  • Имена, начинающиеся с заглавной буквы, обычно являются атрибутами, которые хранят значения или данные, например, свойства объекта.
  • Имена, начинающиеся со строчной буквы, обычно представляют собой функции (также называемые методами), которые выполняют действия или операции, такие как создание или изменение объектов.
  • Имена, начинающиеся с символа подчёркивания (_), обычно предназначены для внутреннего использования внутри модуля и обычно могут быть проигнорированы.

Это различие поможет тебе ориентироваться в API FreeCAD и выбрать подходящую команду для твоих нужд. Например, ты можешь использовать метод для добавления нового объекта в документ. Метод выполняет действия по созданию и добавлению объекта, а атрибуты хранят свойства объекта. Понимание этой структуры облегчает изучение доступных функций, особенно при использовании функции автозаполнения или чтении всплывающих подсказок. Давай добавим куб.

box = doc.addObject("Part::Box", "myBox")

Команда box = doc.addObject("Part::Box", "myBox") добавляет в документ новый объект 3D-куб. Вот простое объяснение:

  • „“'doc.addObject'„“: Это указывает FreeCAD на добавление нового объекта в документ.
  • „“'Part::Box'„“: Это указывает тип создаваемого объекта, в данном случае 3D-куб.
  • „“'myBox'„“: присваивает имя новому объекту, что облегчает его идентификацию и последующее использование.

В результате этой команды в активном документе появляется бокс, а переменная box сохраняет ссылку на него, чтобы вы могли изменять его или взаимодействовать с ним позже. Наш куб добавлен в дерево проекта но в 3D-виде пока ничего не происходит, потому что при работе из Python документ никогда не пересчитывается автоматически. Мы должны делать это вручную, когда это необходимо:

doc.recompute()

Теперь наша куб появился в 3D-виде. Многие кнопки панели инструментов, добавляющие объекты в FreeCAD, на самом деле делают две вещи: добавляют объект и пересчитывают. Попробуйте теперь добавить сферу с помощью соответствующей кнопки в верстаке Part - Деталь, и вы увидите, как две строки кода Python выполняются одна за другой.

You can get a list of all possible object types like Part::Box:

doc.supportedTypes()

Теперь давай изучим содержимое нашего куба:

box.

Ты сразу же увидишь несколько очень интересных вещей, таких как:

box.Height

Это выведет текущую высоту нашего куба. Теперь давай попробуем изменить её:

box.Height = 5

Если ты выделишь свой куб мышью, то увидишь, что на панели свойств, на вкладке Данные, появится наше свойство Height - Высота с новым значением. Все свойства объекта FreeCAD, которые появляются на вкладках Данные и Вид, доступны непосредственно через Python, по их именам, как мы это сделали со свойством Height - Высота. Доступ к свойствам данных осуществляется непосредственно из самого объекта, например:

box.Length

В FreeCAD визуальными свойствами управляет объект ViewObject Каждый объект FreeCAD имеет связанный с ним объект ViewObject, который хранит информацию о том, как объект отображается в графическом интерфейсе, например, цвет, прозрачность или видимость. Однако объект ViewObject доступен только тогда, когда FreeCAD запущен с графическим интерфейсом. Если FreeCAD запущен в неграфическом режиме - например, из терминала с опцией командной строки -c или при использовании в качестве библиотеки Python во внешнем скрипте - объект ViewObject будет недоступен. Это происходит потому, что в этих режимах нет визуального представления объекта, так как графический интерфейс не загружен.

Попробуй выполнить следующий пример, чтобы получить доступ к цвету линии нашего куба:

box.ViewObject.LineColor

Вектора и Размещение

Векторы - это фундаментальное понятие в любом 3D-приложении. Вектор - это список из трёх чисел (x, y и z), которые описывают точку, положение или направление в 3D-пространстве. Векторы имеют решающее значение для определения геометрии, трансформаций и взаимодействий в 3D-среде. Они служат строительными блоками для таких операций, как перемещение, вращение и масштабирование.

В FreeCAD векторы широко используются для создания объектов и манипулирования ими. Они позволяют выполнять широкий спектр математических операций, таких как сложение, вычитание, перекрестные произведения, точечные произведения и проекции. Эти операции позволяют вычислять расстояния, углы и направления или определять отношения между объектами в пространстве.

Понимание векторов и того, как они работают, необходимо для эффективного создания сценариев и настройки FreeCAD. Например, векторы используются для позиционирования объектов, определения их ориентации или даже расчёта траекторий для сложных операций, таких как развёртка или выдавливание с переходом.

В FreeCAD векторы представлены с помощью класса Vector, который предоставляет различные методы и свойства для выполнения операций и доступа к своим компонентам. Освоение этих возможностей значительно расширит ваши возможности по программному взаимодействию с 3D-средой FreeCAD. В FreeCAD векторы работают следующим образом:

myvec = FreeCAD.Vector(2, 0, 0)
print(myvec)
print(myvec.x)
print(myvec.y)
othervec = FreeCAD.Vector(0, 3, 0)
sumvec = myvec.add(othervec)

Вот краткое описание вышеуказанных команд:

  • myvec = FreeCAD.Vector(2,0,0): Создаёт вектор myvec с X = 2, Y = 0, Z = 0.
  • print(myvec): Выводит вектор myvec с его компонентами (X, Y, Z).
  • print(myvec.x): Выводит X-компоненту вектора myvec.
  • print(myvec.y): Выводит Y-компоненту myvec.
  • othervec = FreeCAD.Vector(0,3,0): Создаёт второй вектор othervec с X = 0, Y = 3, Z = 0.
  • sumvec = myvec.add(othervec): Складывает myvec и othervec для создания нового вектора sumvec, содержащего сумму их компонентов.

Другой общей характеристикой объектов FreeCAD является их Placement - Размещение'. Как мы видели в предыдущих главах, каждый объект имеет свойство Placement - Размещение, которое содержит позицию (Base - База) и ориентацию (Rotation - Поворот) объекта. Этими свойствами легко манипулировать из Python, например, чтобы переместить наш объект:

print(box.Placement)
print(box.Placement.Base)
box.Placement.Base = sumvec
otherpla = FreeCAD.Placement()
otherpla.Base = FreeCAD.Vector(5, 5, 0)
box.Placement = otherpla

Вот краткое описание вышеперечисленных команд:

  • print(box.Placement): Выводит размещение куба, которое включает его положение, поворот и ориентацию в 3D-пространстве.
  • print(box.Placement.Base): Выводит положение (Base - Базы) куба, которое представляет собой вектор, отображающий его местоположение в 3D-пространстве.
  • box.Placement.Base = sumvec: Устанавливает базовую позицию (местоположение) куба на вектор sumvec, эффективно перемещая бокс в эту новую позицию.
  • otherpla = FreeCAD.Placement(): Создаёт новый объект размещения с именем otherpla.
  • otherpla.Base = FreeCAD.Vector(5,5,0): Устанавливает базовую позицию otherpla в вектор с координатами (5, 5, 0).
  • box.Placement = otherpla: Применяет otherpla к кубу, обновляя его размещение в новой позиции и ориентации, определенной otherpla.

Читать далее