Python scripting tutorial/ru: Difference between revisions

From FreeCAD Documentation
(Created page with "В этом руководстве описаны оба метода: либо путем копирования / вставки по одной строчке в python к...")
(Updating to match new version of source page)
 
(110 intermediate revisions by 6 users not shown)
Line 1: Line 1:
<languages/>
<languages/>

{{TutorialInfo/ru
{{Docnav/ru
|Topic=Programming
|[[Introduction_to_Python/ru|Introduction to Python]]
|Level=Intermediate
|[[FreeCAD_Scripting_Basics/ru|FreeCAD Scripting Basics]]
|Time=
|Author=
|FCVersion=
|Files=
}}
}}


{{TOCright}}

<span id="Introduction"></span>
==Введение==

[https://ru.wikipedia.org/wiki/Python Python] - это язык программирования, относительно простой в изучении и понимании. Он является многоплатформенным языком с открытым исходным кодом и может использоваться в разных целях: от программирования простых скриптов до очень сложных программ. Но он наиболее распространен как язык сценариев, внедряемых в другие приложения. Так он используется и внутри FreeCAD. Из [[Python_console/ru|консоли Python]] или с помощью собственных скриптов вы можете управлять FreeCAD, заставляя его выполнять очень сложные операции.


Например, из сценария Python вы можете:
[http://en.wikipedia.org/wiki/Python_%28programming_language%29 Python] - это язык программирования, очень простой в использовании и изучении. Он является многоплатформенным языком с открытым исходным кодом и может использоваться для в разных областях - от программирования простых скриптов до очень сложных программ. Но он наиболее распространен как язык сценариев, из-за легкости внедрения в другие приложения. Именно так он используется внутри FreeCAD. Из python консоли или с помощью собственных скриптов вы можете управлять FreeCAD, заставляя его выполнять очень сложные действия, для которых еще нет GUI (графического пользовательского интерфейса)инструментов.
* Создать новые объекты.
* Изменить существующие объекты.
* Изменить трехмерное представление этих объектов.
* Изменить интерфейс FreeCAD.


Существует несколько способов использования Python в FreeCAD:
Например, из python сценария вы можете:
* Из [[FreeCAD Scripting Basics/ru|Интерпретатора Python в FreeCAD]], где вы можете запускать простые команды, симулируя интерфейс командной строки
* создать новые объекты
* Из [[macros/ru|макросов]], которые являются удобным способом быстрого добавления недостающего функционала в интерфейс FreeCAD
* изменить существующие объекты
* Из внешних скриптов, которые можно использовать для создания довольно сложных решений, даже [[Workbenches/ru|верстаков]].
* изменить трехмерное представление этих объектов
* изменить интерфейс FreeCAD


В этом руководстве мы рассмотрим несколько базовых примеров, которые помогут вам начать работу. В этой вики также имеется гораздо больше [[Power users hub/ru|документации по Python сценариям]]. Если вы абсолютный новичок в Python и хотите понять, как это работает, у нас есть базовый курс [[introduction to Python/ru|Введение в Python]].
Существует несколько способов использования python в FreeCAD:
* Из [[FreeCAD Scripting Basics | Интерпретатора python в FreeCAD]], где вы можете запускать простые команды, симулируя интерфейс командной строки
* Из [[macros|макросов]], которые являются удобным способом быстрого добавления недостающего функционала в интерфейс FreeCAD
* Из внешних скриптов, которые можно использовать для программирования более сложных вещей, таких как [[Workbenches|Верстаки]].


<div class="mw-translate-fuzzy">
В этом руководстве мы рассмотрим несколько простых примеров, которые помогут вам начать работу. В этой вики также имеется гораздо больше [[Power users hub | документации по python сценариям]]. Если вы абсолютный новичок в python и хотите понять, как это работает, у нас есть базовый курс [[introduction to Python|Введение в Python]].
Перед написанием сценариев Python, перейдите в окно {{MenuCommand|Правка → Настройки → Основные → Просмотр отчёта}} и проверьте, отмечены ли два пункта:
* {{MenuCommand|Перенаправить внутренний вывод Python в отчет}}.
* {{MenuCommand|Перенаправить внутренние ошибки Python в отчет}}.
Затем перейдите в {{MenuCommand|Вид → Панели}} и отметьте:
* {{MenuCommand|Отчет}}.
</div>


<span id="Writing_Python_code"></span>
"'Важно!'" Перед написанием Python сценариев, перейдите в окно {{MenuCommand | Edit-> Prefences-> General-> Output}} и проверьте 2 пункта:
==Написание кода Python==
* Перенаправить внутренний вывод Python в отчет
* Перенаправить внутренние ошибки Python в отчет
Затем перейдите в {{MenuCommand | View-> Panels}} и проверьте:
* Отображение отчетов
Это сэкономит вам много нервов!


Существует два простых способа написания кода Python в FreeCAD: в [[Python console/ru|консоли Python]] (выберите в меню {{MenuCommand|Вид → Панели → Консоль Python}}) или из [[Std_DlgMacroExecute/ru|редактора макросов]] (выберите в меню {{MenuCommand|Инструменты → Макросы}}). В консоли вы последовательно пишете python команды, которые выполняются при нажатии {{KEY|Enter}}. Макросы могут содержать более сложный многострочный код, который выполняется только во время запуска макроса.
== Написание python кода ==
Существует два простых способа написания Python кода в FreeCAD: в python консоли (доступной из меню «Консоль -> Панели -> Python») или из редактора макросов (Инструменты -> Макросы). В консоли вы последовательно пишете python команды, которые выполняются при нажатии return. Макросы могут содержать более сложный много-строчный скрипт, который выполняется во время запуска макроса.


[[Image:Screenshot_pythoninterpreter.jpg|center|frame|The FreeCAD python console]]
[[Image:Screenshot_pythoninterpreter.jpg]]
{{Caption|Консоль Python в FreeCAD}}


В этом руководстве описаны оба метода: либо путем копирования / вставки по одной строчке в python консоли и нажатия {{KEY | Return}} в конце строки, либо путем копирования / вставки всего кода в новое окно макроса.
В этом руководстве можно использовать оба метода. Можно копировать/вставлять по одной строчке в консоли Python и нажимать {{KEY|Enter}}, или копировать/вставлять весь код в новое окно макроса.
{{Top}}
<span id="Exploring_FreeCAD"></span>
== Изучение FreeCAD ==


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


{{Code|code=
{{Code|code=
Line 46: Line 53:
}}
}}


<div class="mw-translate-fuzzy">
If you type this in the FreeCAD python console, you will notice that as soon as you type "FreeCAD.", 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.
Если Вы вводите это в консоли Python FreeCADа, то заметите, что как только Вы ввели {{incode|FreeCAD.}} (слово FreeCAD с последующей точкой), появится окно, позволяющее быстро автозаполнить продолжение строки. Даже лучше, каждый ввод в списке автодополнения содержит подсказку. Это облегчает раскрытие имеющейся функциональности. Перед выбором {{incode|newDocument}}, взгляните на другие доступные опции.
</div>


[[Image:Screenshot_classbrowser.jpg|center|frame|The autocomplete mechanism of the FreeCAD python console]]
[[Image:Screenshot_classbrowser.jpg]]
{{Caption|Механизм автозаполнения python консоли FreeCAD}}


<div class="mw-translate-fuzzy">
Now our new document will be created. This is similar to pressing the "new document" button on the toolbar. In fact, most buttons in FreeCAD do nothing else than executing a line or two of python code. Even better, you can set an option in {{MenuCommand|Edit->Preferences->General->Macro}} to "show script commands in python console". This will print in the console all python code executed when you press buttons. Very useful to learn how to reproduce actions in python.
Теперь наш новый документ будет создан. Это похоже на нажатие кнопки {{Button|[[Image:Std_New.svg|16px]] [[Std_New/ru|Std New]]}} на панели инструментов. Фактически, большинство кнопок в FreeCAD ничего не делают, кроме выполнения одной или нескольких строк кода Python. Даже лучше, вы можете установить параметр в {{MenuCommand|Правка → Настройки → Общее → Макрос}}, чтобы {{MenuCommand|показать команды сценария в консоли Python}}. Это будет выводить в консоль весь код Python, который выполняется при нажатии кнопок. Очень полезно, чтобы узнать, как воспроизводить действия в Python.
</div>


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


{{Code|code=
{{Code|code=
Line 58: Line 70:
}}
}}


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


{{Code|code=
{{Code|code=
box = doc.addObject("Part::Box","myBox")
box = doc.addObject("Part::Box", "myBox")
}}
}}


<div class="mw-translate-fuzzy">
Nothing happens. Why? Because FreeCAD is made for the big picture. One day, it will work with hundreds of complex objects, all depending one from another. Making a small change somewhere could have a big impact, you may need to recalculate the whole document, which could take a long time... For that reason, almost no command updates the scene automatically. You must do it manually:
Ничего не произошло. Почему? Потому что FreeCAD создан для больших проектов. Однажды он будет работать с сотнями сложных взаимосвязанных объектов. Возможно, что внесение небольшого изменения может иметь большое значение, вам может потребоваться пересчитать весь документ, что может занять много времени ... По этой причине почти никакая команда не обновляет сцену автоматически. Вы должны сделать это вручную:
</div>


{{Code|code=
{{Code|code=
Line 70: Line 84:
}}
}}


<div class="mw-translate-fuzzy">
See? Now our box appeared! Many of the buttons that add objects in FreeCAD actually do 2 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 GUI button, you'll see the two lines of python code being executed one after the other.
Теперь наш куб появился в окне трёхмерного вида. Большинство кнопок панелей инструментов фактически делают две вещи: добавляют объект и выполняют пересчёт. Если Вы включите в настройках опцию {{MenuCommand|"Показывать команды скриптов в консоли python"}} и попробуете добавить сферу с соответствующей кнопкой, Вы увидите две строки Python кода, выполняемые одна за другой.
</div>


Теперь рассмотрим содержимое нашего куба:
What about the "Part::Box" will you ask? How can I know what other kind of objects can be added? It's all here:

{{Code|code=
doc.supportedTypes()
}}

Now let's explore the contents of our box:


{{Code|code=
{{Code|code=
Line 84: Line 94:
}}
}}


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


{{Code|code=
{{Code|code=
Line 90: Line 100:
}}
}}


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


{{Code|code=
{{Code|code=
Line 96: Line 106:
}}
}}


<div class="mw-translate-fuzzy">
If you select your box with the mouse, you'll see that in the properties panel, in the "Data" tab, our "Height" property appears. All properties of a FreeCAD object that appear there (and also in the "View" tab, more about that later), are directly accessible by python too, by their names, like we did with the "Height" property. Try changing the other dimensions of that box.
Если вы выберете куб с помощью мыши, вы увидите, что [[Property_editor/ru|Property editor]] на вкладке {{MenuCommand|Данные}} появится параметр {{PropertyData|Height}}. Все свойства объекта FreeCAD, которые появляются там (а также на вкладке {{MenuCommand|Вид}}, подробнее об этом позже), напрямую доступны также для Python по их именам, аналогично параметру {{PropertyData|Height}}. Попробуйте изменить другие размеры окна.
</div>
{{Top}}
<span id="Vectors_and_placements"></span>
==Вектора и размещение==


[https://ru.wikipedia.org/wiki/Вектор_(геометрия) Вектора] это самая основная концепция в любом трёхмерном приложении. Вектор это список трёх чисел (x, y и z), описывающих точку или позицию в трёхмерном пространстве. С векторами делаются многие вещи, такие как сложение, вычитание, проекции и [https://ru.wikipedia.org/wiki/Линейное_пространство многое другое]. В FreeCAD вектора работают примерно так:
== Vectors and Placements ==
[http://en.wikipedia.org/wiki/Euclidean_vector 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 [http://en.wikipedia.org/wiki/Vector_space much more]. In FreeCAD vectors work like this:


{{Code|code=
{{Code|code=
myvec = FreeCAD.Vector(2,0,0)
myvec = FreeCAD.Vector(2, 0, 0)
myvec
myvec.x
myvec.x
myvec.y
myvec.y
othervec = FreeCAD.Vector(0,3,0)
othervec = FreeCAD.Vector(0, 3, 0)
sumvec = myvec.add(othervec)
sumvec = myvec.add(othervec)
}}
}}


Еще одно имеющееся у всех объектов FreeCAD свойство - это его [[Placement/ru|размещение]]. Каждый объект имеет свойство {{PropertyData/ru|Placement}}, которое содержит {{PropertyData|Base}} (положение) и {{PropertyData|Rotation}} (ориентация) объекта. Это легко манипулировать, например, чтобы переместить наш объект:
Another common feature of FreeCAD objects is their [[Placement|placement]]. Each object has a Placement attributes, which contains the position (Base) and orientation (Rotation) of the object. It is easy to manipulate, for example to move our object:


{{Code|code=
{{Code|code=
Line 121: Line 134:
}}
}}


Теперь вы должны понять пару важных понятий, прежде чем мы продолжим.
Now you must understand a couple of important concepts before we get further.
{{Top}}
<span id="App_and_Gui"></span>
==App и Gui==


FreeCAD был разработан так, чтобы его можно было использовать без пользовательского интерфейса, как приложение командной строки. Поэтому почти каждый объект в FreeCAD состоит из двух частей: {{incode|Object}}, компонент "геометрии", и {{incode|ViewObject}}, его "визуальная" компонента. При работе в режиме командной строки геометрическая часть имеется, но визуальная часть отключена.
== App and Gui ==
FreeCAD is made from the beginning to work as a command-line application, without its user interface. As a result, almost everything is separated between a "geometry" component and a "visual" component. When you work in command-line mode, the geometry part is present, but all the visual part is simply disabled. Almost any object in FreeCAD therefore is made of two parts, an Object and a ViewObject.


Для иллюстрации концепции давайте посмотрим на наш объект куба. Геометрические свойства куба, такие как его размеры, положение и т.д., хранятся в {{incode|Object}}. А его визуальные свойства, такие как цвет, толщина линий и т.д., хранятся в {{incode|ViewObject}}. Это соответствует вкладкам «Данные» и «Вид» в [[Property_editor/ru|Редакторе свойств]]. Доступ к объекту вида осуществляется следующим образом:
To illustrate the concept, see our cube object, the geometric properties of the cube, such as its dimensions, position, etc... are stored in the object, while its visual properties, such as its color, line thickness, etc... are stored in the viewobject. This corresponds to the "Data" and "View" tabs in the property window. The view object of an object is accessed like this:


{{Code|code=
{{Code|code=
vo = box.ViewObject
vo = box.ViewObject
}}
}}
Теперь вы также можете изменить свойства на вкладке «Вид»:
Now you can also change the properties of the "View" tab:


{{Code|code=
{{Code|code=
Line 139: Line 154:
}}
}}


When you start FreeCAD, the python console already loads 2 base modules: FreeCAD and FreeCADGui (which can also be accessed by their shortcuts App and Gui). They contain all kinds of generic functionality to work with documents and their objects. To illustrate our concept, see that both FreeCAD and FreeCADGui contain an ActiveDocument attribute, which is the currently opened document. FreeCAD.ActiveDocument and FreeCADGui.ActiveDocument are not the same object. They are the two components of a FreeCAD document, and they contain different attributes and methods. For example, FreeCADGui.ActiveDocument contains ActiveView, which is the currently opened 3D view
Когда вы запускаете FreeCAD, консоль Python уже загрузила два базовых модуля: {{incode|FreeCAD}} и {{incode|FreeCADGui}}(которые также могут быть доступны по их ярлыкам {{incode|App}} и {{incode|Gui}}). Они содержат все виды общих функций для работы с документами и их объектами. Для иллюстрации нашей концепции, посмотрите, что и {{incode|FreeCAD}}, и {{incode|FreeCADGui}} содержат атрибут {{incode|ActiveDocument}}, который является текущим открытым документом. Однако {{incode|FreeCAD.ActiveDocument}} и {{incode|FreeCADGui.ActiveDocument}} это не один и тот же объект. Это два компонента документа FreeCAD, и содержат разные атрибуты и методы. Например, {{incode|FreeCADGui.ActiveDocument}} содержит {{incode|ActiveView}}, это текущий открытый [[3D_view/ru|трёхмерный вид]].
{{Top}}
<span id="Modules"></span>
==Модули==


<div class="mw-translate-fuzzy">
== Modules ==
Истинная сила FreeCAD заключается в его верных модулях. Базовое приложение FreeCAD - это более или менее пустой контейнер. Без своих модулей он может сделать немного больше, чем создавать новые, пустые документы. Каждый модуль добавляет к интерфейсу не только новые верстаки, но и новые команды Python и новые типы объектов. В результате несколько разных и даже полностью несовместимых типов объектов могут сосуществовать в одном документе. Наиболее важные модули в FreeCAD, которые мы рассмотрим в этом руководстве, это: [[Part_Workbench/ru|Part]], [[Mesh_Workbench/ru|Mesh]], [[Sketcher_Workbench/ru|Sketcher]] и [[Draft_Workbench/ru|Draft]].
Now, you must be wondering, what, other than "Part::Box", can I do? The FreeCAD base application is more or less an empty container. Without its modules, it can do little more than create new, empty documents. The true power of FreeCAD is in its faithful modules. Each of them adds not only new workbenches to the interface, but also new python commands and new object types. As a result, several different or even totally incompatible object types can coexist in the same document. The most important modules in FreeCAD, that we'll look at in this tutorial, are [[Part Module|Part]], [[Mesh Module|Mesh]], [[Sketcher Workbench|Sketcher]] or [[Draft Module|Draft]].
</div>


<div class="mw-translate-fuzzy">
[[Sketcher Workbench|Sketcher]] and [[Draft Module|Draft]] both use the [[Part Module|Part]] module to create and handle their geometry, which are BRep while [[Mesh Module|Mesh]] is totally independent, and handles its own objects. More about that below.
Модули [[Sketcher_Workbench/ru|Sketcher]] и [[Draft_Workbench/ru|Draft]] используют модуль [[Part_Workbench/ru|Part]] для создания и поддержки их геометрии, в то время как модуль [[Mesh_Workbench/ru|Mesh]] полностью независим и поддерживает собственные объекты. Подробнее об этом ниже.
</div>


Вы можете проверить все доступные типы базовых объектов для текущего документа следующим образом:
You can check all the available base object types for the current document like this:


{{Code|code=
{{Code|code=
Line 152: Line 173:
}}
}}


Различные модули FreeCAD не загружаются в консоль Python автоматически. Это нужно для того, чтобы избежать замедленного запуска. Модули загружаются только тогда, когда они вам нужны. Поэтому для исследования того, что, например, находится внутри модуля Part:
The different FreeCAD modules, although they added their object types to FreeCAD, are not automatically loaded in the python console. This is to avoid having a very slow startup. Modules are loaded only when you need them. So, for example, to explore what's inside the Part module:


{{Code|code=
{{Code|code=
Line 159: Line 180:
}}
}}


Но мы поговорим подробнее о модуле Part ниже.
But we'll talk more about the Part module below.
{{Top}}
<span id="Mesh_module"></span>
<div class="mw-translate-fuzzy">
==Mesh==
</div>


[https://ru.wikipedia.org/wiki/Полигональная_сетка Сетки (meshes)] это весьма простой тип трёхмерных объектов, используемых, например, в [https://ru.wikipedia.org/wiki/SketchUp Sketchup], [https://ru.wikipedia.org/wiki/Blender Blender] и [https://ru.wikipedia.org/wiki/Autodesk_3ds_Max 3D Studio Max]. Они состоят из 3 элементов: точек (также называемых вершинами), линий (также называемых ребрами) и граней. Во многих приложениях, включая FreeCAD, грани могут иметь только 3 вершины. Разумеется, ничто не мешает использовать более крупные грани, состоящее из нескольких копланарных треугольников.
By now, you know a bit more about the different modules of FreeCAD: The core modules (FreeCAD, FreeCADGui), and the workbenches modules (Part, Mesh, Sketcher). The other important modules are the 3d scene module (pivy) and the interface module (pyside), we'll talk about them too below.


Сетки просты, и благодаря простоте их можно иметь миллионами в одном документе. Однако в FreeCAD они имеют меньшее использование, и в основном там, где надо импортировать объекты в форматах сетки ({{FileName|.stl}}, {{FileName|.obj}}) из других приложений. Модуль Mesh так же широко использовался в качестве основного тестового модуля в первые месяцы жизни FreeCAD.
Now it's time to explore a bit deeper the important ones, which are the workbench modules.


Сеточные объекты и объекты FreeCAD - это разные вещи. Вы можете видеть объект FreeCAD как контейнер для объекта Mesh (и, как мы увидим ниже, также для объектов Part). Поэтому чтобы добавить объект сетки в FreeCAD, мы должны сначала создать объект FreeCAD и объект Mesh, а затем добавить объект Mesh в объект FreeCAD:
== Mesh ==

[http://en.wikipedia.org/wiki/Polygon_mesh Meshes] are a very simple kind of 3D objects, used for example by [http://en.wikipedia.org/wiki/SketchUp Sketchup], [http://en.wikipedia.org/wiki/Blender_%28software%29 Blender] or [http://en.wikipedia.org/wiki/Autodesk_3ds_Max 3D studio Max]. They are composed of 3 elements: points (also called vertices), lines (also called edges) and faces. In many applications, FreeCAD included, faces can have only 3 vertices. But of course nothing prevents you from having a bigger plane face made of several coplanar triangles.

Meshes are simple, this can be a bad thing, but for many applications such as those mentioned above, it turns to be an advantage, because they are so simple that you can easily have millions of them in a single document. In FreeCAD, though, they have less use, and are mostly there so you can import objects in mesh formats (.stl, .obj) from other applications. It was also used extensively as the main test module in the first month of FreeCAD's life.

Mesh objects and FreeCAD objects are different things. You can see the FreeCAD object as a container for a Mesh object (like, we'll see below, for Part objects too). So in order to add a mesh object to FreeCAD, we must first create a FreeCAD object and a Mesh object, then add the Mesh object to the FreeCAD object:


{{Code|code=
{{Code|code=
import Mesh
import Mesh
mymesh = Mesh.createSphere()
mymesh = Mesh.createSphere()
mymesh.
mymesh.Facets
mymesh.Facets
mymesh.Points
mymesh.Points
meshobj = doc.addObject("Mesh::Feature","MyMesh")
meshobj = doc.addObject("Mesh::Feature", "MyMesh")
meshobj.Mesh = mymesh
meshobj.Mesh = mymesh
doc.recompute()
doc.recompute()
}}
}}


Это стандартный пример, который использует метод {{incode|createSphere()}} для создания сферы, но вы также можете создавать собственные сетки с нуля, определяя их вершины и грани.
This is a standard example, that uses the createSphere() method to automatically create a sphere, but you can very well create custom meshes from scratch, by defining their vertices and faces.


[[Mesh Scripting|Read more about mesh scripting...]]
[[Mesh Scripting/ru|Дальнейшее чтение о скриптах обработки сеток...]]
{{Top}}
<span id="Part_module"></span>
<div class="mw-translate-fuzzy">
==Part==
</div>


<div class="mw-translate-fuzzy">
== Part ==
[[Part_Workbench/ru|Модуль Part]] это самый мощный модуль во всём FreeCAD. Он позволяет создавать и управлять объектами [https://ru.wikipedia.org/wiki/Граничное_представление граничного представления (BRep)]. Объект BRep (Boundary Representation) определяется поверхностями, которые ограничивают и определяют внутренний объем. В отличие от сеток, объекты BRep могут иметь широкий спектр компонентов, от плоских граней до очень сложных поверхностей NURBS.
The [[Part Module]] is the most powerful module of the whole FreeCAD. It allows to create and manipulate [http://en.wikipedia.org/wiki/Boundary_representation BRep] objects. This kind of object, unlike meshes, can have a wide variety of components. To resume a bit, Brep means Boundary Representation. which means that they are defined by their surfaces, which enclose and define an inner volume. These surface can be a variety of things, such as plane faces or very complex NURBS surfaces. They also carry the concept of volume.
</div>


The Part module is based on the powerful [http://en.wikipedia.org/wiki/Open_CASCADE_Technology OpenCasCade] library, which allows a wide range of complex operations to be easily performed on those objects, such as boolean operations, filleting, lofts, etc...
Модуль Part основан на мощной библиотеке [https://ru.wikipedia.org/wiki/Open_CASCADE_Technology OpenCasCade], обеспечивающей широкий спектр сложных операций над этими объектами, таких как логические операции, филетирование, лофты и т. д.


The Part module works the same way as the Mesh module: You create a FreeCAD object, a Part object, then add the Part object to the FreeCAD object:
Модуль Part работает так же, как и модуль Mesh: вы создаете объект FreeCAD, объект Part, а затем добавляете объект Part к объекту FreeCAD:


{{Code|code=
{{Code|code=
import Part
import Part
myshape = Part.makeSphere(10)
myshape = Part.makeSphere(10)
myshape.
myshape.Volume
myshape.Volume
myshape.Area
myshape.Area


shapeobj = doc.addObject("Part::Feature","MyShape")
shapeobj = doc.addObject("Part::Feature", "MyShape")
shapeobj.Shape = myshape
shapeobj.Shape = myshape
doc.recompute()
doc.recompute()
}}
}}


Модуль Part, как и модуль Mesh, имеет ярлык, который автоматически создает объект FreeCAD и добавляет к нему форму, поэтому вы можете сократить последние три строки до:
The Part module (like the Mesh module) also has a shortcut that automatically creates a FreeCAD object and add a shape to it, so you can skip the 3 last lines above:


{{Code|code=
{{Code|code=
Line 214: Line 238:
}}
}}


Исследуя содержимое myshape, вы заметите много интересных подкомпонентов, таких как {{incode|Faces}}, {{incode|Edges}}, {{incode|Vertexes}}, {{incode|Solids}} и {{incode|Shells}}, и широкий спектр геометрических операций, таких как {{incode|cut}} (вычитание), {{incode|common}} (пересечение) или {{incode|fuse}} (объединение). Страница [[Topological_data_scripting/ru|Топологические сценарии данных]] объясняет все это в деталях.
By exploring the contents of myshape, you will notice many interesting available subcomponents such as Faces, Edges, Vertexes, Solids or Shells, and a wide range of geometry operations such as cut (subtraction), common (intersection) or fuse (union). The [[Topological data scripting]] page explains all that in detail.


[[Topological_data_scripting/ru|Читать далее про обработку объектов Part в скриптах...]]
[[Topological data scripting|Read more about part scripting...]]
{{Top}}
<span id="Draft_module"></span>
<div class="mw-translate-fuzzy">
==Draft==
</div>


<div class="mw-translate-fuzzy">
== Draft ==
FreeCAD включает в себя много других модулей, таких как [[Sketcher_Workbench/ru|Sketcher]] и [[Draft_Workbench/ru|Draft]], которые также создают объекты Part. Эти модули добавляют дополнительные параметры к созданным объектам или даже реализуют в них совершенно новый способ обработки геометрии Part. Наш приведенный выше пример куба является идеальным примером параметрического объекта. Все, что вам нужно, чтобы определить куб, это указать параметры высоты, ширины и длины. Исходя из этого, объект автоматически рассчитает свою форму Part. FreeCAD позволяет вам [[Scripted_objects/ru|создавать такие объекты в Python]].
FreeCAD features many more modules, such as [[Sketcher Workbench|Sketcher]] or [[Draft Module|Draft]], which also create Part objects, but add parameters to it, or even carry a whole new way to handle the Part geometry in them. Our box example above, is a perfect example of parametric object. All you need, to define the box, is to specify a couple of parameters, such as height, width and length. Based on those, the object will automatically calculate its Part shape. FreeCAD allows you to [[Scripted objects|create such objects in python]].
</div>


<div class="mw-translate-fuzzy">
The [[Draft Module]] adds a couple of 2D parametric objects types (which are all Part objects) such as lines and circles, and also provides some generic functions that work not only on Draft-made objects, but on any Part object. To explore what is available, simply do:
[[Draft_Workbench/ru|Модуль Draft]] добавляет двумерные параметрические типы объектов (которые являются объектами Part), такие как линии и круги, а также предоставляет некоторые общие функции, которые работают не только с объектами Draft, но и с любым объектом Part. Чтобы узнать, что доступно, просто сделайте:
</div>


{{Code|code=
{{Code|code=
import Draft
import Draft
rec = Draft.makeRectangle(5, 2)
Draft.
mvec = FreeCAD.Vector(4, 4, 0)
rec = Draft.makeRectangle(5,2)
Draft.move(rec, mvec)
mvec = FreeCAD.Vector(4,4,0)
Draft.move(rec,mvec)
Draft.move(box, mvec)
Draft.move(box,mvec)
}}
}}
{{Top}}
<span id="Interface"></span>
==Интерфейс==


Пользовательский интерфейс FreeCAD сделан с помощью [https://ru.wikipedia.org/wiki/Qt Qt], мощной системs графического интерфейса, отвечающей за рисование и обработку всех элементов управления, меню, панелей инструментов и кнопок вокруг окна [[3D_view/ru|трёхмерного просмотра]]. В Qt есть модуль [[PySide/ru|PySide]], через который Python получает доступ к интерфейсам Qt, таким как у FreeCAD. Давайте попробуем поработать с интерфейсом Qt и создать простой диалог:
== Interface ==
The FreeCAD user interface is made with [http://en.wikipedia.org/wiki/Qt_%28framework%29 Qt], a powerful graphical interface system, responsible for drawing and handling all the controls, menus, toolbars, buttons around the 3D view. Qt provides a module, called PySide, which allows python to access and modify Qt interfaces, such as FreeCAD. Let's try to fiddle with the Qt interface and produce a simple dialog:


{{Code|code=
{{Code|code=
from PySide import QtGui
from PySide import QtGui
QtGui.QMessageBox.information(None,"Apollo program","Houston, we have a problem")
QtGui.QMessageBox.information(None, "Apollo program", "Houston, we have a problem")
}}
}}


Обратите внимание, что в появившемся диалоговом окне на панели инструментов есть значок FreeCAD, означающий, что Qt знает, что вызов был отдан из приложения FreeCAD. Можно манипулировать любой частью интерфейса FreeCAD.
See that the dialog that appears has the FreeCAD icon in its toolbar, meaning that Qt knows that the order has been issued from inside the FreeCAD application. We can therefore easily directly manipulate any part of the FreeCAD interface.


Qt - это очень мощная система интерфейса, позволяющая делать очень сложные вещи. Она так же имеет несколько простых в использовании инструментов, таких как Qt Designer, с помощью которых вы можете создавать графические диалоги, а затем добавлять их в интерфейс FreeCAD с помощью нескольких строк кода Python.
Qt is a very powerful interface system, that allows you to do very complex things, but also has a couple of very easy-to use tools such as the Qt Designer with which you can design dialogs graphically and then add them to the FreeCAD interface with a couple of lines of python.


[[PySide|Read more about PySide here...]]
[[PySide/ru|Больше о PySide здесь...]]
{{Top}}
<span id="Macros"></span>
==Макросы==


Теперь, уже хорошо понимая основы, где мы будем хранить наши скрипты Python и как мы собираемся запускать их внутри FreeCAD? Для этого есть простой механизм, называемый [[Macros/ru|Макросы]]. Макросы - это скрипты Python, которые можно добавлять в панели инструментов и запускать кликом мыши. FreeCAD предоставляет простой текстовый редактор ({{MenuCommand|Макросы → Макрос... → Собрать}}), где вы можете написать или вставить сценарии. Как только скрипт готов, используйте {{MenuCommand|Инструменты → Настройка... → Макрос}} для определения ему кнопки, которую можно добавить на панели инструментов.
== Macros ==
Now that you have a good understanding of the basics, where are we going to keep our python scripts, and how are we going to launch them easily from FreeCAD? There is an easy mechanism for that, called [[Macros]]. A macro is simply a python script, that can then be added to a toolbar and be launched from a simple mouse click. FreeCAD provides you with a simple text editor (Macro -> Macros -> Create) where you can write or paste scripts. Once it is done, the Tools -> Customize -> Macros allow you to define a button for it, that can be added to toolbars.


==External scripts==
Now you are ready for more in-depth FreeCAD scripting. Head on to the [[Power users hub]]!


An alternative method for creating, saving, and running your own Python scripts is to create them outside FreeCAD, using an editor of your choice (for example, Vim). To run your Python script inside FreeCAD, be sure to save it with the {{FileName|.py}} extension.
{{docnav|Introduction to Python|FreeCAD Scripting Basics}}

Then use {{MenuCommand|File → Open}} to open your script. It will load into a new tab in the [[Main_view_area|Main view area]]. You can run your script by clicking the {{Button|[[Image:Std_DlgMacroExecuteDirect.svg|16px]] [[Std_DlgMacroExecuteDirect|Execute macro]]}} button. Any errors or script output will be shown in the [[Report_view|Report view]].

When you make and save any modifications to your already-loaded script, a dialog box will appear asking whether you want to reload the modified script into FreeCAD.

<div class="mw-translate-fuzzy">
Теперь вы готовы к более глубокому написанию сценариев FreeCAD. Так что, вперёд в [[Power_users_hub/ru|Центр опытных пользователей]]!
</div>
{{Top}}

{{Docnav/ru
|[[Introduction_to_Python/ru|Introduction to Python]]
|[[FreeCAD_Scripting_Basics/ru|FreeCAD Scripting Basics]]
}}


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

Latest revision as of 20:02, 9 August 2023

Введение

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

Например, из сценария Python вы можете:

  • Создать новые объекты.
  • Изменить существующие объекты.
  • Изменить трехмерное представление этих объектов.
  • Изменить интерфейс FreeCAD.

Существует несколько способов использования Python в FreeCAD:

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

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

Перед написанием сценариев Python, перейдите в окно Правка → Настройки → Основные → Просмотр отчёта и проверьте, отмечены ли два пункта:

  • Перенаправить внутренний вывод Python в отчет.
  • Перенаправить внутренние ошибки Python в отчет.

Затем перейдите в Вид → Панели и отметьте:

  • Отчет.

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

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

Консоль Python в FreeCAD

В этом руководстве можно использовать оба метода. Можно копировать/вставлять по одной строчке в консоли Python и нажимать Enter, или копировать/вставлять весь код в новое окно макроса.

наверх

Изучение FreeCAD

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

doc = FreeCAD.newDocument()

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

Механизм автозаполнения python консоли FreeCAD

Теперь наш новый документ будет создан. Это похоже на нажатие кнопки Std New на панели инструментов. Фактически, большинство кнопок в FreeCAD ничего не делают, кроме выполнения одной или нескольких строк кода Python. Даже лучше, вы можете установить параметр в Правка → Настройки → Общее → Макрос, чтобы показать команды сценария в консоли Python. Это будет выводить в консоль весь код Python, который выполняется при нажатии кнопок. Очень полезно, чтобы узнать, как воспроизводить действия в Python.

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

doc.

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

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

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

doc.recompute()

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

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

box.

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

box.Height

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

box.Height = 5

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

наверх

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

Вектора это самая основная концепция в любом трёхмерном приложении. Вектор это список трёх чисел (x, y и z), описывающих точку или позицию в трёхмерном пространстве. С векторами делаются многие вещи, такие как сложение, вычитание, проекции и многое другое. В FreeCAD вектора работают примерно так:

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

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

box.Placement
box.Placement.Base
box.Placement.Base = sumvec
 
otherpla = FreeCAD.Placement()
box.Placement = otherpla

Теперь вы должны понять пару важных понятий, прежде чем мы продолжим.

наверх

App и Gui

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

Для иллюстрации концепции давайте посмотрим на наш объект куба. Геометрические свойства куба, такие как его размеры, положение и т.д., хранятся в Object. А его визуальные свойства, такие как цвет, толщина линий и т.д., хранятся в ViewObject. Это соответствует вкладкам «Данные» и «Вид» в Редакторе свойств. Доступ к объекту вида осуществляется следующим образом:

vo = box.ViewObject

Теперь вы также можете изменить свойства на вкладке «Вид»:

vo.Transparency = 80
vo.hide()
vo.show()

Когда вы запускаете FreeCAD, консоль Python уже загрузила два базовых модуля: FreeCAD и FreeCADGui(которые также могут быть доступны по их ярлыкам App и Gui). Они содержат все виды общих функций для работы с документами и их объектами. Для иллюстрации нашей концепции, посмотрите, что и FreeCAD, и FreeCADGui содержат атрибут ActiveDocument, который является текущим открытым документом. Однако FreeCAD.ActiveDocument и FreeCADGui.ActiveDocument это не один и тот же объект. Это два компонента документа FreeCAD, и содержат разные атрибуты и методы. Например, FreeCADGui.ActiveDocument содержит ActiveView, это текущий открытый трёхмерный вид.

наверх

Модули

Истинная сила FreeCAD заключается в его верных модулях. Базовое приложение FreeCAD - это более или менее пустой контейнер. Без своих модулей он может сделать немного больше, чем создавать новые, пустые документы. Каждый модуль добавляет к интерфейсу не только новые верстаки, но и новые команды Python и новые типы объектов. В результате несколько разных и даже полностью несовместимых типов объектов могут сосуществовать в одном документе. Наиболее важные модули в FreeCAD, которые мы рассмотрим в этом руководстве, это: Part, Mesh, Sketcher и Draft.

Модули Sketcher и Draft используют модуль Part для создания и поддержки их геометрии, в то время как модуль Mesh полностью независим и поддерживает собственные объекты. Подробнее об этом ниже.

Вы можете проверить все доступные типы базовых объектов для текущего документа следующим образом:

doc.supportedTypes()

Различные модули FreeCAD не загружаются в консоль Python автоматически. Это нужно для того, чтобы избежать замедленного запуска. Модули загружаются только тогда, когда они вам нужны. Поэтому для исследования того, что, например, находится внутри модуля Part:

import Part
Part.

Но мы поговорим подробнее о модуле Part ниже.

наверх

Mesh

Сетки (meshes) это весьма простой тип трёхмерных объектов, используемых, например, в Sketchup, Blender и 3D Studio Max. Они состоят из 3 элементов: точек (также называемых вершинами), линий (также называемых ребрами) и граней. Во многих приложениях, включая FreeCAD, грани могут иметь только 3 вершины. Разумеется, ничто не мешает использовать более крупные грани, состоящее из нескольких копланарных треугольников.

Сетки просты, и благодаря простоте их можно иметь миллионами в одном документе. Однако в FreeCAD они имеют меньшее использование, и в основном там, где надо импортировать объекты в форматах сетки (.stl, .obj) из других приложений. Модуль Mesh так же широко использовался в качестве основного тестового модуля в первые месяцы жизни FreeCAD.

Сеточные объекты и объекты FreeCAD - это разные вещи. Вы можете видеть объект FreeCAD как контейнер для объекта Mesh (и, как мы увидим ниже, также для объектов Part). Поэтому чтобы добавить объект сетки в FreeCAD, мы должны сначала создать объект FreeCAD и объект Mesh, а затем добавить объект Mesh в объект FreeCAD:

import Mesh
mymesh = Mesh.createSphere()
mymesh.Facets
mymesh.Points
 
meshobj = doc.addObject("Mesh::Feature", "MyMesh")
meshobj.Mesh = mymesh
doc.recompute()

Это стандартный пример, который использует метод createSphere() для создания сферы, но вы также можете создавать собственные сетки с нуля, определяя их вершины и грани.

Дальнейшее чтение о скриптах обработки сеток...

наверх

Part

Модуль Part это самый мощный модуль во всём FreeCAD. Он позволяет создавать и управлять объектами граничного представления (BRep). Объект BRep (Boundary Representation) определяется поверхностями, которые ограничивают и определяют внутренний объем. В отличие от сеток, объекты BRep могут иметь широкий спектр компонентов, от плоских граней до очень сложных поверхностей NURBS.

Модуль Part основан на мощной библиотеке OpenCasCade, обеспечивающей широкий спектр сложных операций над этими объектами, таких как логические операции, филетирование, лофты и т. д.

Модуль Part работает так же, как и модуль Mesh: вы создаете объект FreeCAD, объект Part, а затем добавляете объект Part к объекту FreeCAD:

import Part
myshape = Part.makeSphere(10)
myshape.Volume
myshape.Area

shapeobj = doc.addObject("Part::Feature", "MyShape")
shapeobj.Shape = myshape
doc.recompute()

Модуль Part, как и модуль Mesh, имеет ярлык, который автоматически создает объект FreeCAD и добавляет к нему форму, поэтому вы можете сократить последние три строки до:

Part.show(myshape)

Исследуя содержимое myshape, вы заметите много интересных подкомпонентов, таких как Faces, Edges, Vertexes, Solids и Shells, и широкий спектр геометрических операций, таких как cut (вычитание), common (пересечение) или fuse (объединение). Страница Топологические сценарии данных объясняет все это в деталях.

Читать далее про обработку объектов Part в скриптах...

наверх

Draft

FreeCAD включает в себя много других модулей, таких как Sketcher и Draft, которые также создают объекты Part. Эти модули добавляют дополнительные параметры к созданным объектам или даже реализуют в них совершенно новый способ обработки геометрии Part. Наш приведенный выше пример куба является идеальным примером параметрического объекта. Все, что вам нужно, чтобы определить куб, это указать параметры высоты, ширины и длины. Исходя из этого, объект автоматически рассчитает свою форму Part. FreeCAD позволяет вам создавать такие объекты в Python.

Модуль Draft добавляет двумерные параметрические типы объектов (которые являются объектами Part), такие как линии и круги, а также предоставляет некоторые общие функции, которые работают не только с объектами Draft, но и с любым объектом Part. Чтобы узнать, что доступно, просто сделайте:

import Draft
rec = Draft.makeRectangle(5, 2)
mvec = FreeCAD.Vector(4, 4, 0)
Draft.move(rec, mvec)
Draft.move(box, mvec)

наверх

Интерфейс

Пользовательский интерфейс FreeCAD сделан с помощью Qt, мощной системs графического интерфейса, отвечающей за рисование и обработку всех элементов управления, меню, панелей инструментов и кнопок вокруг окна трёхмерного просмотра. В Qt есть модуль PySide, через который Python получает доступ к интерфейсам Qt, таким как у FreeCAD. Давайте попробуем поработать с интерфейсом Qt и создать простой диалог:

from PySide import QtGui
QtGui.QMessageBox.information(None, "Apollo program", "Houston, we have a problem")

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

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

Больше о PySide здесь...

наверх

Макросы

Теперь, уже хорошо понимая основы, где мы будем хранить наши скрипты Python и как мы собираемся запускать их внутри FreeCAD? Для этого есть простой механизм, называемый Макросы. Макросы - это скрипты Python, которые можно добавлять в панели инструментов и запускать кликом мыши. FreeCAD предоставляет простой текстовый редактор (Макросы → Макрос... → Собрать), где вы можете написать или вставить сценарии. Как только скрипт готов, используйте Инструменты → Настройка... → Макрос для определения ему кнопки, которую можно добавить на панели инструментов.

External scripts

An alternative method for creating, saving, and running your own Python scripts is to create them outside FreeCAD, using an editor of your choice (for example, Vim). To run your Python script inside FreeCAD, be sure to save it with the .py extension.

Then use File → Open to open your script. It will load into a new tab in the Main view area. You can run your script by clicking the Execute macro button. Any errors or script output will be shown in the Report view.

When you make and save any modifications to your already-loaded script, a dialog box will appear asking whether you want to reload the modified script into FreeCAD.

Теперь вы готовы к более глубокому написанию сценариев FreeCAD. Так что, вперёд в Центр опытных пользователей!

наверх