FreeCAD Scripting Basics/ru: Difference between revisions

From FreeCAD Documentation
(Created page with "В меню {{MenuCommand|Справка}}, вы найдете раздел {{MenuCommand|Автоматически сгенерированная документация p...")
(Updating to match new version of source page)
 
(41 intermediate revisions by 4 users not shown)
Line 1: Line 1:
<languages/>
<languages/>


<div class="mw-translate-fuzzy">
{{Docnav/ru
{{Docnav/ru
|[[Python scripting tutorial/ru|Python scripting tutorial]]
|[[Python scripting tutorial/ru|Python scripting tutorial]]
|[[Topological_data_scripting/ru|Topological data scripting]]
|[[Topological_data_scripting/ru|Topological data scripting]]
}}
}}
</div>


{{TOCright}}
{{TOCright}}
Line 29: Line 31:


Щелкнув правой кнопкой мыши в окне интерпритатора, у вас также есть несколько других опций, таких как копирование всей истории (полезно для эксперимента что-то сделать, а затем получить полный сценарий этого), или вставить имя файла с полным путем.
Щелкнув правой кнопкой мыши в окне интерпритатора, у вас также есть несколько других опций, таких как копирование всей истории (полезно для эксперимента что-то сделать, а затем получить полный сценарий этого), или вставить имя файла с полным путем.
{{Top}}

[[#top|top]]

===Python Help===
===Python Help===


В меню {{MenuCommand|Справка}}, вы найдете раздел {{MenuCommand|Автоматически сгенерированная документация python}}, при открытии которого откроется окно браузера, содержащего полную, создаваемую в реальном времени, документацию всех модулей Python, доступных в интерпретаторе FreeCAD, встроенных модулях Python и FreeCAD, установленных в систему модулей и дополнительные модулей FreeCAD. Доступна ли документация зависит от того, сколько усилий разработчик каждого модуля приложил к документированию своего кода, но, как правило Python модули имеют репутацию хорошо задокументированных. Ваше окно FreeCAD должно оставаться открытым для того чтобы система документации работала. В разделе {{MenuCommand|Документация по созданию скриптов на Python}} находится ссылка на этот вики-раздел [[Power_users_hub/ru|Power users hub]].
В меню {{MenuCommand|Справка}}, вы найдете раздел {{MenuCommand|Автоматически сгенерированная документация python}}, при открытии которого откроется окно браузера, содержащего полную, создаваемую в реальном времени, документацию всех модулей Python, доступных в интерпретаторе FreeCAD, встроенных модулях Python и FreeCAD, установленных в систему модулей и дополнительные модулей FreeCAD. Доступна ли документация зависит от того, сколько усилий разработчик каждого модуля приложил к документированию своего кода, но, как правило Python модули имеют репутацию хорошо задокументированных. Ваше окно FreeCAD должно оставаться открытым для того чтобы система документации работала. В разделе {{MenuCommand|Документация по созданию скриптов на Python}} находится ссылка на этот вики-раздел [[Power_users_hub/ru|Power users hub]].
{{Top}}

[[#top|top]]

<div class="mw-translate-fuzzy">
==Встроеные модули==
==Встроеные модули==


С FreeCAD предназначена для запуска без графического интерфейса пользователя, почти все функциональные возможности разделены на две группы: Базовая функциональности, названные App, и Gui функциональность, названный Gui. Таким образом, наши два основных встроенных в FreeCAD модуля называются App и Gui. Эти два модуля можно также подключить из сценариев, вне интерпретатора, с соответствующими названиями FreeCAD и FreeCADGui.
Поскольку FreeCAD спроектирован с возможностью запуска без графического интерфейса пользователя (Graphical User Interface, GUI), почти все функциональные возможности разделены на две группы: Базовая функциональности, названные {{incode|App}}, и функциональность интерфейса, названный {{incode|Gui}}. Эти два модуля можно также подключить из сценариев, вне интерпретатора, под названиями {{incode|FreeCAD}} и {{incode|FreeCADGui}} соответственно.
</div>


* В модуле {{incode|App}} вы найдете все, связанное с самим приложением, такие методы как открытия или закрытия файлов, а также документов, как настройка активного документа или объявление его содержания.
Since FreeCAD is designed so that it can also be run without a Graphical User Interface (GUI), almost all its functionality is separated into two groups: Core functionality, named {{incode|App}}, and GUI functionality, named {{incode|Gui}}. These two modules can also be accessed from scripts outside of the interpreter, by the names {{incode|FreeCAD}} and {{incode|FreeCADGui}} respectively.


* В модуле {{incode|Gui}} вы найдете инструменты для доступа и управления элементами графического интерфейса, такими как инструментарии и и их панели инструментов, и, что более интересно, графическое представление всего содержимого FreeCAD.
<div class="mw-translate-fuzzy">
* В '''App модуле''', вы найдете все, связанное с самим приложением, такие методы как открытия или закрытия файлов, а также документов, как настройка активного документа или объявление его содержания.
</div>


Перелистывание содержимого этих модулей не слишком полезно, поскольку они растут довольно быстро с развитием FreeCAD. Но два инструмента просмотра (браузер классов и справка Python) должны обеспечить вас полной и актуальной документацией в любой момент.
<div class="mw-translate-fuzzy">
{{Top}}
* В '''Gui модуле''', вы найдете инструменты для доступа и управления элементами графического интерфейса, такими как инструментарии и и их панели инструментов, и, что более интересно, графическое представление всего содержимого FreeCAD.
</div>

<div class="mw-translate-fuzzy">
Список всего что содержиться в этих модулях - немного контрпродуктивная задача, поскольку они растут довольно быстро с развитием FreeCAD. Но два инструмента (класс браузер и Python help) для просмотра должны обеспечить вас, в любой момент, полной и актуальной документацией по этим модулям.
</div>

[[#top|top]]

<div class="mw-translate-fuzzy">
===Объекты модулей App и Gui===
===Объекты модулей App и Gui===


Как мы уже говорили, в FreeCAD, всё разделенные между основным и представлением. Это включает в себя и 3D-объекты. Вы можете получить доступ определяющим свойствам объектов (одна из особенностей FreeCAD) с помощью модуля App, и измененить то, как они представлены на экране с помощью модуля Gui. Например, куб имеет свойства, которые определяют его, такие как ширина, длина, высота, они хранятся в App объекта, а представление свойств, таких как цвета граней, режим отрисовки, хранятся в соответствующем Gui объекте.
Как мы уже говорили, в FreeCAD, всё разделенные между основным и представлением. Это подразумевает и 3D-объекты. Вы можете получить доступ определяющим свойствам объектов (одна из особенностей FreeCAD) с помощью модуля {{incode|App}}, и изменить то, как они представлены на экране с помощью модуля {{incode|Gui}}. Например, куб имеет свойства, которые определяют его, такие как ширина, длина, высота, они хранятся в объекте {{incode|App}}, а свойства представления, такие как цвета граней, режим отрисовки, хранятся в соответствующем объекте {{incode|Gui}}.
</div>

As already mentioned, in FreeCAD everything is separated into core and representation. This includes the 3D objects. You can access defining properties of objects (called features in FreeCAD) via the {{incode|App}} module, and change the way they are represented on screen via the {{incode|Gui}} module. For example, a cube has properties that define it (like width, length, height) that are stored in an {{incode|App}} object, and representation properties (like faces color, drawing mode) that are stored in a corresponding {{incode|Gui}} object.


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


Для каждого объекта {{incode|App}} в вашем документе существует соответствующий объект {{incode|Gui}}. Фактически и сам документ содержит объекты {{incode|App}} и {{incode|Gui}}. Это, конечно, действует только при запуске FreeCAD с полным интерфейсом. В режиме командной строки графического интерфейса нет, так что доступны только объекты {{incode|App}}. Обратите внимание, что часть объектов {{incode|Gui}} создается снова каждый раз когда объект {{incode|App}} отмечен как "подлежащий пересчёту" (например, когда один из его параметров изменился), поэтому изменения, которые вы могли сделать непосредственно на объекте {{incode|Gui}} могут быть потеряны.
<div class="mw-translate-fuzzy">
Для каждого App объекта в вашем документе, существует соответствующий объект Gui. Сам документ, собственно, также App и Gui объект. Это, конечно, действует только при запуске FreeCAD с полным интерфейсом. В режиме командной строки ,без графического интерфейса , доступны только App объекты. Обратите внимание, что часть Gui объектов создается снова каждый раз когдат App объект отмечен как "to be recomputed"[вольно:был пересчитан] (например, когда один из его параметров изменился), поэтому изменения, которые вы могли сделать непосредственно на Gui объекте, могут быть потеряны.
</div>


чтобы получить доступ к части {{incode|App}} чего-либо, введите:
<div class="mw-translate-fuzzy">
чтобы получить доступ к App части, введите:
</div>


{{Code|code=
{{Code|code=
Line 82: Line 60:
}}
}}


где {{incode|"ObjectName"}} это имя вашего объекта. Вы также можете ввести:
<div class="mw-translate-fuzzy">
где "ObjectName это имя вашего объекта. Вы также можете ввести:
</div>


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


чтобы получить доступ к части {{incode|Gui}} того же объекта, введите:
<div class="mw-translate-fuzzy">
чтобы получить доступ к Gui части некоторого объекта, введите:
</div>


{{Code|code=
{{Code|code=
Line 98: Line 72:
}}
}}


где {{incode|"ObjectName"}} - имя вашего объекта. Вы также можете ввести:
<div class="mw-translate-fuzzy">
где "ObjectName это имя вашего объекта. Вы также можете ввести:
</div>


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


Если мы находимся в режиме командной строки и графического интерфейса нет, последняя строка вернет {{incode|None}}.
<div class="mw-translate-fuzzy">
{{Top}}
If we have no GUI (for example we are in command line mode), the last line will return None.
===Объекты документа===
Если у нас нет графического интерфейса (например, мы находимся в режиме командной строки), последняя строка вернет None.
</div>


В FreeCAD всё, над чем вы работаете, находится внутри документов. Документ содержит вашу геометрию и может быть сохранен в файл. Одновременно может быть открыто несколько документов. Документ, также как и геометрия, содержащиеся внутри него, имеет объекты {{incode|App}} и {{incode|Gui}}. Объект {{incode|App}} содержит фактически определенную Вами геометрию, в то время как объект {{incode|Gui}} содержит различные отображения из вашего документа. Вы можете открывать несколько окон, каждое из которых отображение вашей работы с различным масштабом или точкой зрения. Эти виды входят в объект {{incode|Gui}} вашего документа.
[[#top|top]]


Чтобы получить доступ к части {{incode|App}} текущего открытого (активного) документа, введите:
<div class="mw-translate-fuzzy">
=== Объекты документа ===

В FreeCAD всё над чем вы работаете находится внутри документов. Документ содержит вашу геометрию и может быть сохранен в файл. Одновременно может быть открыто несколько документов. Документ, также как и геометрия, содержащиеся внутри него, имеет App и Gui части . App часть содержит вашу фактически определенную геометрию, в то время как Gui часть содержит различные отображения(views) вашего документа. Вы можете открывать несколько окон, каждое из которых отображение вашей работы с различным масштабом или точкой зрения. Эти виды являются входят в Gui часть вашего документа.
</div>

In FreeCAD all your work resides inside documents. A document contains your geometry and can be saved to a file. Several documents can be opened at the same time. The document, like the geometry contained inside, has {{incode|App}} and {{incode|Gui}} objects. The {{incode|App}} object contains your actual geometry definitions, while the {{incode|Gui}} object contains the different views of your document. You can open several windows, each one viewing your work with a different zoom factor or from a different direction. These views are all part of your document's {{incode|Gui}} object.

<div class="mw-translate-fuzzy">
Чтобы получить доступ к App части текущего открытого (активного) документа, введите:
</div>


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


Чтобы получить доступ к части {{incode|Gui}} текущего открытого (активного) документа, введите:
<div class="mw-translate-fuzzy">
Чтобы получить доступ к Gui части текущего открытого (активного) документа, введите:
</div>


{{Code|code=
{{Code|code=
Line 148: Line 107:
myView = Gui.ActiveDocument.ActiveView
myView = Gui.ActiveDocument.ActiveView
}}
}}
{{Top}}

==Использование дополнительных модулей==
[[#top|top]]


<div class="mw-translate-fuzzy">
<div class="mw-translate-fuzzy">
Модули {{incode|FreeCAD}} и {{incode|FreeCADGui}} отвечают за создание и управление объектами в документе FreeCAD. Они не занимаются созданием или изменением геометрии. Это потому, что эта геометрия может быть нескольких типов, и поэтому она управляется дополнительными модулями, каждый из которых отвечает за управление определенным типом геометрии. Например, [[Part Workbench/ru|Модуль Part]] использует ядро OpenCascade и поэтому может создавать и манипулировать геометрией типа [http://en.wikipedia.org/wiki/Boundary_representation B-rep]. В то же время [[Mesh Workbench/ru|Модуль Mesh]] может создавать и модифицировать объекты типа сетка. Таким образом, FreeCAD может обрабатывать самые разные типы объектов, которые могут сосуществовать в одном документе, и новые типы могут быть легко добавлены в будущем.
== Использование дополнительных модулей ==
Модули FreeCAD и FreeCADGui отвечают за создание и управление объектами в документе FreeCAD. Они не занимаются созданием или изменением геометрии. Это потому, что эта геометрия может быть нескольких типов, и поэтому она управляется дополнительными модулями, каждый из которых отвечает за управление определенным типом геометрии. Например, [[Part Module | Модуль Part ]] использует ядро OpenCascade и поэтому может создавать и манипулировать геометрией типа [http://en.wikipedia.org/wiki/Boundary_representation B-rep], что и является предназначением OpenCascade. [[Mesh Module | Модуль Mesh ]] может создавать и модифицировать объекты типа сетка. Таким образом, FreeCAD может обрабатывать самые разные типы объектов, которые могут сосуществовать в одном документе, и новые типы могут быть легко добавлены в будущем.
</div>
</div>
{{Top}}
===Создание объектов===


The {{incode|FreeCAD}} and {{incode|FreeCADGui}} modules are only responsible for creating and managing objects in the FreeCAD document. They don't actually do anything more such as creating or modifying geometry. This is because that geometry can be of several types, and therefore requires additional modules, each responsible for managing a certain geometry type. For example, the [[Part Module|Part Module]], using the OpenCascade kernel, is able to create and manipulate [http://en.wikipedia.org/wiki/Boundary_representation BRep] type geometry. Whereas the [[Mesh Module|Mesh Module]] is able to build and modify mesh objects. In this manner FreeCAD is able to handle a wide variety of object types, that can all coexist in the same document, and new types can easily be added in the future.

[[#top|top]]

<div class="mw-translate-fuzzy">
=== Создание объектов ===
Каждый модуль имеет свой собственный способ обработки своей геометрии, но обычно они все могут создавать объекты в документе. Но документ FreeCAD также знает о доступных типах объектов, предоставляемых модулями:
Каждый модуль имеет свой собственный способ обработки своей геометрии, но обычно они все могут создавать объекты в документе. Но документ FreeCAD также знает о доступных типах объектов, предоставляемых модулями:
</div>

Each module has its own way of dealing with geometry, but one thing they usually all can do is create objects in the document. But the FreeCAD document is also aware of the available object types provided by the modules:


{{Code|code=
{{Code|code=
Line 171: Line 122:
}}
}}


перечислит все возможные объекты, которые вы можете создать. Например, давайте создадим сетку (поддерживаемую модулем {{incode|Mesh}}) и деталь (поддерживаемую модулем {{incode|Part}}):
<div class="mw-translate-fuzzy">
перечислит вам все возможные объекты, которые вы можете создать. Например, давайте создадим сетку (обработанную модулем Mesh) и деталь (обработанную модулем Part):
</div>


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


Первый аргумент - это тип объекта, второй - имя объекта. Наши два объекта выглядят почти одинаково: они еще не содержат никакой геометрии, и большинство их свойств одинаковы, когда вы проверяете их с помощью {{incode|dir(myMesh)}} и {{incode|dir(myPart)}}. За исключением одного, {{incode|myMesh}} имеет свойство {{incode|Mesh}}, а {{incode|myPart}} - свойство {{incode|Shape}}. Здесь хранятся данные Mesh и Part. Например, давайте создадим куб {{incode|Part}} и сохраним его в нашем объекте {{incode|myPart}}:
<div class="mw-translate-fuzzy">
Первый аргумент - это тип объекта, второй - имя объекта. Наши два объекта выглядят почти одинаково: они еще не содержат никакой геометрии, и большинство их свойств одинаковы, когда вы проверяете их с помощью dir (myMesh) и dir (myPart). За исключением одного, myMesh имеет свойство «Mesh», а «Part» - свойство «Shape». Здесь хранятся данные Mesh и Part. Например, давайте создадим куб Part и сохраним его в нашем объекте myPart:
</div>


{{Code|code=
{{Code|code=
Line 190: Line 137:
}}
}}


Вы можете попытаться сохранить куб в свойстве {{incode|Mesh}} объекта {{incode|myMesh}}, он вернет сообщение об ошибке неправильного типа. Это происходит из-за того, что каждое свойство предназначены для хранения только определенного типа. В свойстве {{incode|Mesh}} вы можете сохранять только то, что создано с помощью модуля {{incode|Mesh}}. Обратите внимание, что большинство модулей также имеют ярлык для добавления своей геометрии в документ:
<div class="mw-translate-fuzzy">
Вы можете попытаться сохранить куб в свойстве Mesh объекта myMesh, он вернет сообщение об ошибке неправильного типа. Это происходит из-за того, что эти свойства предназначены для хранения только определенного типа. В свойстве Mesh myMesh вы можете сохранять только то, что создано с помощью модуля Mesh. Обратите внимание, что большинство модулей также имеют ярлык для добавления своей геометрии в документ:
</div>


{{Code|code=
{{Code|code=
Line 199: Line 144:
Part.show(cube)
Part.show(cube)
}}
}}
{{Top}}
===Изменение объектов===


[[#top|top]]

<div class="mw-translate-fuzzy">
=== Изменение объектов ===
Модификация объекта выполняется так же:
Модификация объекта выполняется так же:
</div>

Modifying an object is done in the same way:


{{Code|code=
{{Code|code=
Line 221: Line 161:
myPart.Shape = biggercube
myPart.Shape = biggercube
}}
}}
{{Top}}
===Запрос объектов===


[[#top|top]]

<div class="mw-translate-fuzzy">
=== Запрос объектов ===
Вы всегда можете посмотреть на тип объекта следующим образом:
Вы всегда можете посмотреть на тип объекта следующим образом:
</div>

You can always look at the type of an object like this:


{{Code|code=
{{Code|code=
Line 241: Line 176:
print(myObj.isDerivedFrom("Part::Feature"))
print(myObj.isDerivedFrom("Part::Feature"))
}}
}}

Теперь вы действительно можете начать играть с FreeCAD! Насчёт полного списка всех доступных модулей и доступных инструментов смотрите в разделе [[:Category:API|Category:API]].
{{Top}}


<div class="mw-translate-fuzzy">
<div class="mw-translate-fuzzy">
Теперь вы действительно можете начать играть с FreeCAD! Чтобы узнать, что вы можете сделать с помощью [[Part Module | Part Module]], прочитайте страницу [[Topological data scripting | Part scripting]] или страницу [[Mesh Scripting | Mesh Scripting]] для работы с [[Mesh Module | Модуль Mesh]]. Обратите внимание, что хотя модули Part и Mesh являются наиболее полными и широко используемыми, другие модули, такие как [[Draft Module | Draft Module]], также имеют API [[Draft API | для написания скриптов]], которые могут быть вам полезны. Полный список всех модулей и доступных инструментов см. в разделе [[:Category:API|Category:API]].
</div>

[[#top|top]]

{{Docnav/ru
{{Docnav/ru
|[[Python scripting tutorial/ru|Python scripting tutorial]]
|[[Python scripting tutorial/ru|Python scripting tutorial]]
|[[Topological_data_scripting/ru|Topological data scripting]]
|[[Topological_data_scripting/ru|Topological data scripting]]
}}
}}
</div>


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

Latest revision as of 13:46, 22 October 2021

Написание сценариев Python в FreeCAD

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

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

Интерпретатор

В интерпретаторе вы можете получить доступ к установленным в вашей системе модулям Python, а также встроенным модулям FreeCAD, и всем дополнительным модулям FreeCAD что вы установите позже. Скриншот ниже показывает интерпретатор Python:

The FreeCAD Python interpreter

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

The FreeCAD class browser

Таким образом, сначало наберите App. или Gui. посмотрите, что происходит. Другой, более общий Python метод изучения содержимого модулей и классов является использование команды print(dir()). Например, ввод print(dir()) выведет список всех модулей, загруженных в FreeCAD. print(dir(App)) покажет вам все, что содержит App модуль и т.д.

Еще одна полезная особенность интерпритатора возможность вернуться назад по истории команд и извлечь строки кода, которые вы уже набрали ранее. Для перемещения по истории команд, просто используйте Up arrow или Down arrow.

Щелкнув правой кнопкой мыши в окне интерпритатора, у вас также есть несколько других опций, таких как копирование всей истории (полезно для эксперимента что-то сделать, а затем получить полный сценарий этого), или вставить имя файла с полным путем.

наверх

Python Help

В меню Справка, вы найдете раздел Автоматически сгенерированная документация python, при открытии которого откроется окно браузера, содержащего полную, создаваемую в реальном времени, документацию всех модулей Python, доступных в интерпретаторе FreeCAD, встроенных модулях Python и FreeCAD, установленных в систему модулей и дополнительные модулей FreeCAD. Доступна ли документация зависит от того, сколько усилий разработчик каждого модуля приложил к документированию своего кода, но, как правило Python модули имеют репутацию хорошо задокументированных. Ваше окно FreeCAD должно оставаться открытым для того чтобы система документации работала. В разделе Документация по созданию скриптов на Python находится ссылка на этот вики-раздел Power users hub.

наверх

Встроеные модули

Поскольку FreeCAD спроектирован с возможностью запуска без графического интерфейса пользователя (Graphical User Interface, GUI), почти все функциональные возможности разделены на две группы: Базовая функциональности, названные App, и функциональность интерфейса, названный Gui. Эти два модуля можно также подключить из сценариев, вне интерпретатора, под названиями FreeCAD и FreeCADGui соответственно.

  • В модуле App вы найдете все, связанное с самим приложением, такие методы как открытия или закрытия файлов, а также документов, как настройка активного документа или объявление его содержания.
  • В модуле Gui вы найдете инструменты для доступа и управления элементами графического интерфейса, такими как инструментарии и и их панели инструментов, и, что более интересно, графическое представление всего содержимого FreeCAD.

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

наверх

Объекты модулей App и Gui

Как мы уже говорили, в FreeCAD, всё разделенные между основным и представлением. Это подразумевает и 3D-объекты. Вы можете получить доступ определяющим свойствам объектов (одна из особенностей FreeCAD) с помощью модуля App, и изменить то, как они представлены на экране с помощью модуля Gui. Например, куб имеет свойства, которые определяют его, такие как ширина, длина, высота, они хранятся в объекте App, а свойства представления, такие как цвета граней, режим отрисовки, хранятся в соответствующем объекте Gui.

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

Для каждого объекта App в вашем документе существует соответствующий объект Gui. Фактически и сам документ содержит объекты App и Gui. Это, конечно, действует только при запуске FreeCAD с полным интерфейсом. В режиме командной строки графического интерфейса нет, так что доступны только объекты App. Обратите внимание, что часть объектов Gui создается снова каждый раз когда объект App отмечен как "подлежащий пересчёту" (например, когда один из его параметров изменился), поэтому изменения, которые вы могли сделать непосредственно на объекте Gui могут быть потеряны.

чтобы получить доступ к части App чего-либо, введите:

myObject = App.ActiveDocument.getObject("ObjectName")

где "ObjectName" это имя вашего объекта. Вы также можете ввести:

myObject = App.ActiveDocument.ObjectName

чтобы получить доступ к части Gui того же объекта, введите:

myViewObject = Gui.ActiveDocument.getObject("ObjectName")

где "ObjectName" - имя вашего объекта. Вы также можете ввести:

myViewObject = App.ActiveDocument.ObjectName.ViewObject

Если мы находимся в режиме командной строки и графического интерфейса нет, последняя строка вернет None.

наверх

Объекты документа

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

Чтобы получить доступ к части App текущего открытого (активного) документа, введите:

myDocument = App.ActiveDocument

Чтобы создать новый документ, введите:

myDocument = App.newDocument("Document Name")

Чтобы получить доступ к части Gui текущего открытого (активного) документа, введите:

myGuiDocument = Gui.ActiveDocument

чтобы получить доступ к текущему виду, введите:

myView = Gui.ActiveDocument.ActiveView

наверх

Использование дополнительных модулей

Модули FreeCAD и FreeCADGui отвечают за создание и управление объектами в документе FreeCAD. Они не занимаются созданием или изменением геометрии. Это потому, что эта геометрия может быть нескольких типов, и поэтому она управляется дополнительными модулями, каждый из которых отвечает за управление определенным типом геометрии. Например, Модуль Part использует ядро OpenCascade и поэтому может создавать и манипулировать геометрией типа B-rep. В то же время Модуль Mesh может создавать и модифицировать объекты типа сетка. Таким образом, FreeCAD может обрабатывать самые разные типы объектов, которые могут сосуществовать в одном документе, и новые типы могут быть легко добавлены в будущем.

наверх

Создание объектов

Каждый модуль имеет свой собственный способ обработки своей геометрии, но обычно они все могут создавать объекты в документе. Но документ FreeCAD также знает о доступных типах объектов, предоставляемых модулями:

FreeCAD.ActiveDocument.supportedTypes()

перечислит все возможные объекты, которые вы можете создать. Например, давайте создадим сетку (поддерживаемую модулем Mesh) и деталь (поддерживаемую модулем Part):

myMesh = FreeCAD.ActiveDocument.addObject("Mesh::Feature", "myMeshName")
myPart = FreeCAD.ActiveDocument.addObject("Part::Feature", "myPartName")

Первый аргумент - это тип объекта, второй - имя объекта. Наши два объекта выглядят почти одинаково: они еще не содержат никакой геометрии, и большинство их свойств одинаковы, когда вы проверяете их с помощью dir(myMesh) и dir(myPart). За исключением одного, myMesh имеет свойство Mesh, а myPart - свойство Shape. Здесь хранятся данные Mesh и Part. Например, давайте создадим куб Part и сохраним его в нашем объекте myPart:

import Part
cube = Part.makeBox(2, 2, 2)
myPart.Shape = cube

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

import Part
cube = Part.makeBox(2, 2, 2)
Part.show(cube)

наверх

Изменение объектов

Модификация объекта выполняется так же:

import Part
cube = Part.makeBox(2, 2, 2)
myPart.Shape = cube

Теперь давайте изменим форму на большую:

biggercube = Part.makeBox(5, 5, 5)
myPart.Shape = biggercube

наверх

Запрос объектов

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

myObj = FreeCAD.ActiveDocument.getObject("myObjectName")
print(myObj.TypeId)

или проверить, является ли объект производным от одного из базовых объектов (элемент детали, элемент сетки и т.д.):

print(myObj.isDerivedFrom("Part::Feature"))

Теперь вы действительно можете начать играть с FreeCAD! Насчёт полного списка всех доступных модулей и доступных инструментов смотрите в разделе Category:API.

наверх