Manual:A gentle introduction/ru: Difference between revisions

From FreeCAD Documentation
(Created page with "В этой главе Вы сможете использовать оба метода, но рекомендуется использовать консоль Python, пос...")
(Updating to match new version of source page)
 
(53 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<languages/>
{{Manual:TOC/ru}}

{{Docnav/ru
|[[Manual:Creating renderings/ru|Создание визуализаций]]
|[[Manual:Creating and manipulating geometry/ru|Creating and manipulating geometry]]
|[[Manual:Introduction/ru|Manual start]]
|IconC=Crystal Clear manual.png
}}

{{Manual:TOC}}


[https://ru.wikipedia.org/wiki/Python Python] - популярный у многих язык программирования с открытыми исходниками, часто используемых как скриптовый язык, встраиваемый в приложения, как в случае FreeCAD. У него так же много возможностей, интересных для пользователей FreeCAD: он лёгок в изучении, особенно для людей, ранее не программировавших, и встроен во множество других приложений, что делает его очень ценным для изучения, поскольку Вы сможете использовать его во множестве других приложений, таких как [http://www.blender.org Blender], [http://www.inkscape.org Inkscape] или [http://grass.osgeo.org/ GRASS].
[https://ru.wikipedia.org/wiki/Python Python] - популярный язык программирования с открытыми исходниками, часто встраиваемый в приложения как скриптовый язык, как в случае FreeCAD. У него так же много возможностей, интересных для пользователей FreeCAD: он лёгок в изучении, особенно для людей, ранее не программировавших, и встроен во множество других приложений. Это делает его очень ценным для изучения, поскольку Вы сможете использовать его во множестве других приложений, таких как [http://www.blender.org Blender], [http://www.inkscape.org Inkscape] или [http://grass.osgeo.org/ GRASS].


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


[[Image:Exercise_python_01.jpg]]
[[Image:Exercise_python_01.jpg]]


<div class="mw-translate-fuzzy">
Но консоль python можно использовать и по-другому: каждый раз как Вы нажмёте на кнопку в панели инструментов или выполните в FreeCAD другую операцию, в консоли появляется и выполняется код python. Оставляя консоль Python открытой, Вы можете точно видеть как разворачивается код python в процессе работы, и довольно быстро, почти не замечая, Вы сможете выучить язык python.
Но консоль Python можно использовать и по-другому: каждый раз как Вы нажмёте на кнопку в панели инструментов или выполните в FreeCAD другую операцию, в консоли появляется и выполняется код Python. Оставляя консоль Python открытой, Вы можете точно видеть как разворачивается код Python в процессе работы, и довольно быстро, почти не замечая, Вы сможете выучить что-то из языка Python.
</div>


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


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


<span id="Writing_Python_code"></span>
=== Написание кода на Python ===
=== Написание кода на Python ===


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


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


Если Вы впервые используете Python, перед продолжением сначала подумайте о знакомстве с [[Introduction_to_Python/ru|введением в программирование на Python]], которое сделает Ваши основные понятия о Python яснее.
If this is the first time you are doing Python coding, consider reading this short [[Introduction_to_Python|introduction to Python programming]] before going further, it will make the basic concepts of Python clearer.


<span id="Manipulating_FreeCAD_objects"></span>
=== Манипуляция объектами FreeCAD ===
=== Манипуляция объектами FreeCAD ===


Начнём с создания нового пустого документа:
Let's start by creating a new empty document:


doc = FreeCAD.newDocument()
doc = FreeCAD.newDocument()


Если Вы вводили это в консоли Python FreeCADа, то заметили, что как только Вы ввели "FreeCAD." (слово FreeCAD с последующей точкой), появилось окно, позволяющее быстро автозаполнить продолжение строки. Даже лучше, каждый ввод в списке автодополнения содержит подсказку. Это облегчает раскрытие имеющейся функциональности. Перед выбором "newDocument", взгляните на другие доступные опции.
If you type this in the FreeCAD python console, you will notice that as soon as you type "FreeCAD." (the word FreeCAD followed by a dot), a windows pops up, allowing to quickly autocomplete the rest of your line. Even better, each entry in the autocomplete list has a tooltip explaining what it does. This makes it very easy to explore the functionality available. Before choosing "newDocument", have a look at the other options available.


[[Image:Exercise_python_02.jpg]]
[[Image:Exercise_python_02.jpg]]


Как только Вы нажмёте '''Enter''', будет создан новый документ. Это то же, что нажать на панели инструментов кнопку "Создать". В Python кнопка используется, чтобы показать нечто, что содержится в чём-то другом (функция newDocument содержится внутри модуля FreeCAD). Окно с вариантами, которое появляется, соответственно показывает всё, что содержится в "FreeCAD". Если Вы вместо скобок добавите точку после newDocument, Вам будет показано всё содержимое функции newDocument. Скобки обязательны, когда Вы вызываете функцию Python, такую как эта. Мы покажем это яснее внизу.
As soon as you press '''Enter''' our new document will be created. This is similar to pressing the "new document" button on the toolbar. In Python, the dot is used to indicate something that is contained inside something else (newDocument is a function that is inside the FreeCAD module). The window that pops up therefore shows you everything that is contained inside "FreeCAD". If you would add a dot after newDocument, instead of the parentheses, it would show you everything that is contained inside the newDocument function. The parentheses are mandatory when you are calling a Python function, such as this one. We will illustrate that better below.


Теперь вернёмся назад в документ. Посмотрим, что мы можем с ним сделать. Введите следующее и изучите доступные варианты:
Now let's get back to our document. Let's see what we can do with it:


doc.
doc.


Обычно имена, начинающиеся с заглавной буквы, это атрибуты, они содержат значения. Имена с маленькой буквы являются функциями (называемые так же методами), они "что-то делают". Имена, начинающиеся с подчёркиваний, обычно используются для внутренних нужд модуля, и Вам лучше игнорировать их. Используем один из методов для добавления в документ нового объекта:
Explore the available options. Usually names that begin with a capital letter are attributes, they contain a value, while names that begin with small letter are functions (also called methods), they "do something". Names that begin with an underscore are usually there for the internal working of the module, and you shouldn't care about them. Let's use one of the methods to add a new object to our document:


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


Наш куб уже добавлен в древо проекта, но ничего не возникло в окне трёхмерного вида, поскольку при работе из Python документ не пересчитывается автоматически. Нам надо сделать это вручную, когда нужно:
Our box is added in the tree view, but nothing happens in the 3D view yet, because when working from Python, the document is never recomputed automatically. We must do that manually, whenever we need:


doc.recompute()
doc.recompute()


<div class="mw-translate-fuzzy">
Now our box appeared in the 3D view. Many of the toolbar buttons that add objects in FreeCAD actually do two things: add the object, and recompute. If you turned on the "show script commands in python console" option above, try now adding a sphere with the appropriate button in the Part Workbench, and you will see the two lines of python code being executed one after the other.
Теперь наш куб появился в окне трёхмерного вида. Большинство кнопок панелей инструментов фактически делают две вещи: добавляют объект и выполняют рекомпиляцию. Если Вы включите в настройках опцию "Показывать команды скриптов в консоли Python" и попробуете добавить сферу с соответствующей кнопкой в верстаке Part, Вы увидите две линии кода Python, выполняемые одна за другой.
</div>


Вы можете получить список всех возможных объектов, подобных Part::Box:
You can get a list of all possible object types like Part::Box:


doc.supportedTypes()
doc.supportedTypes()


Теперь рассмотрим содержимое нашего куба:
Now let's explore the contents of our box:


box.
box.


Вы немедленно увидите несколько очень интересных вещей вроде этого:
You'll immediately see a couple of very interesting things such as:


box.Height
box.Height


Это покажет текущую высоту нашего куба. Теперь попробуем её изменить:
This will print the current height of our box. Now let's try to change that:


box.Height = 5
box.Height = 5


Если Вы выделите Ваш куб мышью, Вы увидите что в панели параметров, под вкладкой '''Данные''', наш параметр '''Height''' будет показан с новым значением. Все параметры объектов FreeCAD, показываемые во вкладках '''Data''' и '''View''', так же доступны через Python через их имена, как мы делали через параметр Height. Параметры доступны через сам объект, например:
If you select your box with the mouse, you will see that in the properties panel, under the '''Data''' tab, our '''Height''' property appears with the new value. All properties of a FreeCAD object that appear in the '''Data''' and '''View''' tabs are directly accessible by python too, by their names, like we did with the Height property. Data properties are accessed directly from the object itself, for example:


box.Length
box.Length


Параметры вида хранятся внутри '''ViewObject'''. Каждый объект FreeCAD содержит ViewObject, где хранятся визуальные параметры объекта. При запуске FreeCAD без графического интерфейса (например, при запуске из терминала с опцией -c, или из другого скрипта Python), ViewObject недоступен, поскольку отображения нет.
View properties are stored inside a '''ViewObject'''. Each FreeCAd object possesses a ViewObject, which stores the visual properties of the object. When running FreeCAD without its Graphical Interface (for example when launching it from a terminal with the -c command line option, or using it from another Python script), the ViewObject is not available, since there is no visual at all.


Попробуйте следующий пример для доступа к цвету линии нашего куба:
For example, to access the line color of our box:


box.ViewObject.LineColor
box.ViewObject.LineColor


<span id="Vectors_and_Placements"></span>
=== Векторы и места размещения ===
=== Векторы и места размещения ===


Вектора это фундаментальная концепция в любом приложении трёхмерного моделирования. Это список из 3 чисел (x, y и z), указывающих точку или позицию в трёхмерном пространстве. С векторами могут быть выполнены множество вещей, сложение, вычитание, проекции и многое другое. В FreeCAD векторы работают так:
Vectors are a very fundamental concept in any 3D application. It is a list of 3 numbers (x, y and z), describing a point or position in the 3D space. A lot of things can be done with vectors, such as additions, subtractions, projections and much more. In FreeCAD vectors work like this:


myvec = FreeCAD.Vector(2,0,0)
myvec = FreeCAD.Vector(2,0,0)
Line 85: Line 103:




Другое общее свойство объектов FreeCAD это их размещение '''Placement'''. Как мы видели в предыдущих главах, у каждого объекта есть параметр Placement, содержащий его позицию (Base) и ориентацию (Rotation). Ими легко манипулировать через Python, например, для перемещения нашего объекта:
Another common feature of FreeCAD objects is their '''Placement'''. As we saw in earlier chapters, each object has a Placement property, which contains the position (Base) and orientation (Rotation) of the object. It is easy to manipulate from Python, for example to move our object:


print(box.Placement)
print(box.Placement)
Line 94: Line 112:
box.Placement = otherpla
box.Placement = otherpla


'''Read more'''
'''Читать далее'''


<div class="mw-translate-fuzzy">
* [https://www.python.org/ Python]
* [https://www.python.org Python]
* [[Macros|Working with Macros]]
* [[Macros/ru|Работа с макросами]]
* [[Introduction_to_Python|Introduction to Python scripting]]
* [[Introduction_to_Python/ru|Введение в создание скриптов Python]]
* [[Python_scripting_tutorial|Using Python in FreeCAD]]
* [[Python_scripting_tutorial/ru|Использование Python в FreeCAD]]
* [[Power_users_hub|The Python scripting wiki hub]]
* [[Power_users_hub/ru|Хаб wiki работы со скриптами Python]]
</div>



<languages/>
{{Docnav/ru
|[[Manual:Creating renderings/ru|Создание визуализаций]]
|[[Manual:Creating and manipulating geometry/ru|Creating and manipulating geometry]]
|[[Manual:Introduction/ru|Manual start]]
|IconC=Crystal Clear manual.png
}}

{{Powerdocnavi{{#translation:}}}}
[[Category:Developer Documentation{{#translation:}}]]
[[Category:Python Code{{#translation:}}]]

Latest revision as of 19:14, 4 November 2023

Other languages:

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

Читать далее