Manual:A gentle introduction/ru

Python - популярный у многих язык программирования с открытыми исходниками, часто используемых как скриптовый язык, встраиваемый в приложения, как в случае FreeCAD. У него так же много возможностей, интересных для пользователей FreeCAD: он лёгок в изучении, особенно для людей, ранее не программировавших, и встроен во множество других приложений, что делает его очень ценным для изучения, поскольку Вы сможете использовать его во множестве других приложений, таких как Blender, Inkscape или GRASS.

FreeCAD широко использует Python. С его помощью Вы можете иметь доступ и управлять практически любой возможностью FreeCAD. Вы можете, например, создавать новые объекты, модифицировать его геометрию, анализировать содержимое, или даже создавать новые элементы управления, инструменты и панели. Некоторые верстаки FreeCAD и большинство дополнительных верстаков запрограммированы полностью на python. У FreeCAD есть совершенная консоль python, доступная из меню Вид->Панели->Консоль Python. Она часто полезна для выполнения операций, для которых пока нет кнопок инструментальных панелей, или проверки фигур на ошибки, или выполнения повторяющихся задач:



Но консоль python можно использовать и по-другому: каждый раз как Вы нажмёте на кнопку в панели инструментов или выполните в FreeCAD другую операцию, в консоли появляется и выполняется код python. Оставляя консоль Python открытой, Вы можете точно видеть как разворачивается код python в процессе работы, и довольно быстро, почти не замечая, Вы сможете выучить язык python.

У FreeCAD так же есть система макросов, позволяющая записывать действия для последующего воспроизведения. Эта система так же использует консоль Python, просто записывая всё, что им сделано.

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

Написание кода на Python
Есть два простых способа написания кода python в FreeCAD: из консоли python (меню Вид -> Панели -> Консоль Python), или из редактора макросов (меню Tools -> Macros -> New). В консоли Вы пишете команды python одну за одной, и они выполняются после нажатия кнопки Return, в то время как макросы могут содержать сложный скрипт из нескольких линий, исполняемый лишь когда макрос запущен из того же окна макросов.

В этой главе Вы сможете использовать оба метода, но рекомендуется использовать консоль Python, поскольку она немедленно проинформирует Вас о любой ошибке ввода.

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

Манипуляция объектами FreeCAD
Начнём с создания нового пустого документа:

doc = FreeCAD.newDocument

Если Вы вводили это в консоли python FreeCADа, то заметили, что как только Вы ввели "FreeCAD." (слово FreeCAD с последующей точкой), появилось окно, позволяющее быстро автозаполнить продолжение строки. Даже лучше, каждый ввод в списке автодополнения содержит подсказку. Это облегчает раскрытие имеющейся функциональности. Перед выбором "newDocument", взгляните на другие доступные опции.



Как только Вы нажмёте Enter, будет создан новый документ. Это то же, что нажать на панели инструментов кнопку "Создать". В Python кнопка используется, чтобы показать нечто, что содержится в чём-то другом (функция newDocument содержится внутри модуля FreeCAD). Окно с вариантами, которое появляется, соответственно показывает всё, что содержится в "FreeCAD". Если Вы вместо скобок добавите точку после newDocument, Вам будет показано всё содержимое функции newDocument. Скобки обязательны, когда Вы вызываете функцию Python, такую как эта. Мы покажем это яснее внизу.

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

doc.

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

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

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

doc.recompute

Теперь наш куб появился в окне трёхмерного вида. Большинство кнопок панелей инструментов фактически делают две вещи: добавляют объект и выполняют рекомпиляцию. Если Вы включите в настройках опцию "Показывать команды скриптов в консоли python" и попробуете добавить сферу с соответствующей кнопкой в верстаке Part, Вы увидите две линии кода python, выполняемые одна за другой.

Вы можете получить список всех возможных объектов, подобных Part::Box:

doc.supportedTypes

Теперь рассмотрим содержимое нашего куба:

box.

Вы немедленно увидите несколько очень интересных вещей вроде этого:

box.Height

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

box.Height = 5

Если Вы выделите Ваш куб мышью, Вы увидите что в панели параметров, под вкладкой Данные, наш параметр Height будет показан с новым значением. Все параметры объектов FreeCAD, показываемые во вкладках Data и View, так же доступны через python через их имена, как мы делали через параметр Height. Параметры доступны через сам объект, например:

box.Length

Параметры вида хранятся внутри ViewObject. Каждый объект FreeCAD содержит ViewObject, где хранятся визуальные параметры объекта. При запуске FreeCAD без графического интерфейса (например, при запуске из терминала с опцией -c, или из другого скрипта Python), ViewObject недоступен, поскольку отображения нет.

Например, для доступа к цвету линии нашего куба:

box.ViewObject.LineColor

Векторы и места размещения
Вектора это основная концепция в любом приложении трёхмерного моделирования. Это список из 3 чисел (x, y и z), указывающих точку или позицию в трёхмерном пространстве. С векторами могут быть выполнены множество вещей, сложение, вычитание, проекции и многое другое. В 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)

Другое общее свойство объектов 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

Читать далее


 * Python
 * Работа с макросами
 * Introduction to Python scripting
 * Using Python in FreeCAD
 * The Python scripting wiki hub