Python - это язык программирования высокого уровня, общего назначения, который очень часто используется в больших приложениях для автоматизации некоторых задач путем создания скриптов или макросов.
В FreeCAD код Python можно использовать для создания различных элементов программно, без необходимости нажимать на графический пользовательский интерфейс. Кроме того, многие инструменты и верстаки FreeCAD запрограммированы на Python.
Смотрите Введение в Python, чтобы узнать об основах языка программирования Python, затем Руководство по написанию сценариев на Python и Основы написания скриптов для FreeCAD, чтобы начать писать скрипты для FreeCAD.
Читабельность кода Python является одним из наиболее важных аспектов этого языка. Использование четкого и последовательного стиля в сообществе Python облегчает вклад различных разработчиков, поскольку большинство опытных программистов на Python ожидают, что код будет отформатирован определенным образом и будет следовать определенным правилам. При написании кода на Python рекомендуется следовать PEP8: Руководство по стилю написания кода Python и PEP257: Соглашения о строках документов.
Эти документы представляют пояснения в более удобной для пользователя форме:
- Как написать Красивый код на Python с помощью PEP 8
- Документирование Кода Python: Полное Руководство.
В этой документации следует соблюдать некоторые соглашения для примеров Python.
Это типичная сигнатура функции
Wire = make_wire(pointslist, closed=False, placement=None, face=None, support=None)
- Аргументы с парами ключ-значение являются необязательными, значение по умолчанию указано в подписи. Это означает, что следующие вызовы эквивалентны:
Wire = make_wire(pointslist, False, None, None, None)
Wire = make_wire(pointslist, False, None, None)
Wire = make_wire(pointslist, False, None)
Wire = make_wire(pointslist, False)
Wire = make_wire(pointslist)
: В этом примере первый аргумент не имеет значения по умолчанию, поэтому его всегда следует включать.
- Если аргументы заданы с явным ключом, необязательные аргументы могут быть заданы в любом порядке. Это означает, что следующие вызовы эквивалентны:
Wire = make_wire(pointslist, closed=False, placement=None, face=None)
Wire = make_wire(pointslist, closed=False, face=None, placement=None)
Wire = make_wire(pointslist, placement=None, closed=False, face=None)
Wire = make_wire(pointslist, support=None, closed=False, placement=None, face=None)
- В рекомендациях Python подчеркивается удобочитаемость кода; в частности, круглые скобки должны сразу следовать за именем функции, а пробел должен следовать за запятой.
p1 = Vector(0, 0, 0)
p2 = Vector(1, 1, 0)
p3 = Vector(2, 0, 0)
Wire = make_wire([p1, p2, p3], closed=True)
- Если код необходимо разбить на несколько строк, это следует делать через запятую внутри скобок или круглых скобок; вторая строка должна быть выровнена с предыдущей.
a_list = [1, 2, 3,
2, 4, 5]
Wire = make_wire(pointslist,
False, None,
None, None)
- Функции могут возвращать объект, который может быть использован в качестве основы для другой функции рисования.
Wire = make_wire(pointslist, closed=True, face=True)
Window = make_window(Wire, name="Big window")
Функции Python хранятся в файлах, называемых модулями. Перед использованием любой функции вызываемой из модуля, модуль должен быть включен в код инструкцией import
.
Это создает префиксы к функциям, то есть module.function()
. Эта система предотвращает колизии имен между функциями, которые имеют одинаковые имена, но находятся в разных модулях. Например, две функции Arch.make_window()
и MyModule.make_window()
могут сосуществовать без проблем.
Полные примеры должны включать необходимый импорт и функции с префиксами.
import FreeCAD as App
import Draft
p1 = App.Vector(0, 0, 0)
p2 = App.Vector(1, 1, 0)
p3 = App.Vector(2, 0, 0)
Wire = Draft.make_wire([p1, p2, p3], closed=True)
import FreeCAD as App
import Draft
import Arch
p1 = App.Vector(0, 0, 0)
p2 = App.Vector(1, 0, 0)
p3 = App.Vector(1, 1, 0)
p4 = App.Vector(0, 2, 0)
pointslist = [p1, p2, p3, p4]
Wire = Draft.make_wire(pointslist, closed=True, face=True)
Structure = Arch.make_structure(Wire, name="Big pillar")
⏵ documentation index > Developer Documentation > API > Python Code > Glossary > Python/ru