Методы класса FeaturePython
Введение
Данная страница содержит справочные данные по доступным переопределяемым методам примененных в описаниях: Create a FeaturePython object part I и Программируемые объекты.
Основная ссылка
Указанные ниже методы в ~ 99% случаев применяются опытными пользователями proxy классов Python.
execute(self, obj)
|
Вызывается во время перерасчета FeaturePython (или пересчета всего документа) | Не вызывайте recompute() из этого метода (или любого метода, вызываемого из execute() ), поскольку это вызовет повторный пересчет, что может привести к зацикливанию.
|
onBeforeChange(self, obj, prop)
|
Вызывается перед тем, как значение свойства будет изменено | prop - название изменяемого свойства, но не сам объект свойства. Изменение свойства не может быть отменено. Будущее/текущее значение свойства не доступны для сравнения одновременно.
|
onChanged(self, obj, prop)
|
Вызывается после того, как значение свойства было изменено | prop - название свойства, которое подлежит изменению, но не сам объект свойства.
|
onDocumentRestored(self, obj)
|
Вызывается после восстановления документа или копирования объекта FeaturePython. | Иногда ссылки на объект FeaturePython из класса или класс из объекта FeaturePython могут быть нарушены, так как класс __init__() метод не вызывается при реконструкции объекта. Добавление self.Object = obj или obj.Proxy = self как правило решает эти проблемы.
|
Нередко можно столкнуться с ситуацией, когда обратные вызовы (callbacks) Python запускаются не так, как следовало бы. Начинающие в этой области могут быть уверены, что система обратного вызова FeaturePython не является хрупкой или сломанной. Неизменно, когда обратные вызовы не выполняются, это происходит из-за того, что ссылка потеряна или не определена в базовом коде. Однако, если кажется, что обратные вызовы прерываются без объяснения причин, предоставление ссылок на объекты/proxy ссылки в обратном вызове onDocumentRestored()
(как указано в первой таблице выше) может облегчить эти проблемы. Пока вы не освоитесь с системой обратного вызова, может быть полезно добавлять инструкции вывода в консоль print() в каждый обратный вызов для вывода сообщений в консоль в процессе разработки.
Дополнительные методы
Приведенные ниже методы предназначены для продвинутого применения proxy классов Python, как правило в большинстве случаев они вам не понадобятся.
- mustExecute
- getViewProviderName
- getSubObject
- getSubObjects
- getLinkedObject
- hasChildElement
- isElementVisible
- canLinkProperties
- allowDuplicateLabel
- redirectSubName
- canLoadPartial
- onBeforeChangeLabel
Определение всех доступных Python методов
В случаях, когда документация к описываемому классу не актуализирована, вы можете самостоятельно определить какие методы доступны в нем , обратившись к исходному C++ коду. Например в классе шаблоне FeaturePython перечислены различные вызовы, в виде: imp-><название метода>()
.
Каждому из них соответствует аналогичный метод доступный в Python.
К примеру, imp->execute()
в строке 193 означает, что execute
метод доступен в Python коде.
Обратите внимание, что getPyObject()
и init()
являются особыми случаями и не подлежат подобному способу определения.
Смотрите также
- FreeCAD GitHub: FeaturePython.h - public API
- FreeCAD GitHub: FeaturePythonT template class
- FreeCAD Forum Discussion: Scripted Objects Complete Method Reference
- FreeCAD scripting: Python, Introduction to Python, Python scripting tutorial, FreeCAD Scripting Basics
- Modules: Builtin modules, Units, Quantity
- Workbenches: Workbench creation, Gui Commands, Commands, Installing more workbenches
- Meshes and Parts: Mesh Scripting, Topological data scripting, Mesh to Part, PythonOCC
- Parametric objects: Scripted objects, Viewproviders (Custom icon in tree view)
- Scenegraph: Coin (Inventor) scenegraph, Pivy
- Graphical interface: Interface creation, Interface creation completely in Python (1, 2, 3, 4, 5), PySide, PySide examples beginner, intermediate, advanced
- Macros: Macros, How to install macros
- Embedding: Embedding FreeCAD, Embedding FreeCADGui
- Other: Expressions, Code snippets, Line drawing function, FreeCAD vector math library (deprecated)
- Hubs: User hub, Power users hub, Developer hub