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

From FreeCAD Documentation
Revision as of 15:49, 5 December 2022 by Evgeniy (talk | contribs) (Created page with "==Дополнительные методы== Приведенные ниже методы предназначены для '''продвинутого''' применени...")
Other languages:

Введение

This page serves as a reference for the available overridable methods on Create a FeaturePython object part I or Scripted objects.

Primary reference

The below methods account for ~99% of the use-cases power-users may have for Python proxy classes.

execute(self, obj) Called during document recomputes Do not call recompute() from this method (or any method called from execute()) as this causes a nested recompute.
onBeforeChange(self, obj, prop) Вызывается перед тем, как значение свойства будет изменено prop - имя изменяемого свойства, а не сам объект свойства. Изменение свойства не может быть отменено. Будущее/текущее значение свойства не доступны для сравнения одновременно.
onChanged(self, obj, prop) Вызывается после изменения свойства prop - имя свойства, которое подлежит изменению, а не сам объект свойства.
onDocumentRestored(self, obj) Вызывается после восстановления документа или копирования объекта FeaturePython. Иногда ссылки на объект FeaturePython из класса или класс из объекта FeaturePython могут быть нарушены, так как класс __init__() метод не вызывается при реконструкции объекта. Добавление self.Object = obj или obj.Proxy = self как правило решает эти проблемы.

It is not uncommon to encounter a situation where the Python callbacks are not being triggered as they should. Beginners in this area can rest assured that the FeaturePython callback system is not fragile or broken. Invariably when callbacks fail to run it is because a reference is lost or undefined in the underlying code. If, however, callbacks appear to be breaking with no explanation, providing object/proxy references in the onDocumentRestored() callback (as noted in the first table above) may alleviate these problems. Until you are comfortable with the callback system, it may be useful to add print statements in each callback to print messages to the console during development.

Дополнительные методы

Приведенные ниже методы предназначены для продвинутого применения proxy классов Python, как правило в большинстве случаев они вам не понадобятся.

  • mustExecute
  • getViewProviderName
  • getSubObject
  • getSubObjects
  • getLinkedObject
  • hasChildElement
  • isElementVisible
  • canLinkProperties
  • allowDuplicateLabel
  • redirectSubName
  • canLoadPartial
  • onBeforeChangeLabel

Determining available Python methods

Within the FeaturePython Template Class exists various imp-><method name>() calls.

Each of these correspond to an available bound Python method.

For example, imp->execute() on line 193 means the execute method is available.

Note, getPyObject() and init() are special-cases and don't follow the above heuristic.

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