Методы класса FeaturePython

From FreeCAD Documentation
This page is a translated version of the page FeaturePython methods and the translation is 93% complete.
Other languages:

Введение

Данная страница содержит справочные данные по доступным переопределяемым методам примененных в описаниях: 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() являются особыми случаями и не подлежат подобному способу определения.

Смотрите также