FeaturePython Methoden
Einführung
Diese Seite dient als Referenz für die verfügbaren überschreibbaren Methoden von Ein FeaturePython-Objekt erstellen Teil I oder Skriptgenerierte Objekte.
Primäre Referenz
Die unten aufgeführten Methoden machen ~99% der Anwendungsfälle aus, die Vielnutzer für Python-Proxy-Klassen haben können.
execute(self, obj)
|
Wird während der Neuberechnung von Dokumenten aufgerufen | recompute() nicht aus dieser Methode (oder einer anderen Methode, die aus execute() aufgerufen wird) aufrufen, da dies zu einer verschachtelten Neuberechnung führt.
|
onBeforeChange(self, obj, prop)
|
Wird aufgerufen, bevor ein Eigenschaftswert geändert wird | prop ist der Name der zu ändernden Eigenschaft, nicht das Eigenschaftsobjekt selbst. Eigenschaftsänderungen können nicht rückgängig gemacht werden. Vorherige/nächste Eigenschaftswerte stehen nicht gleichzeitig zum Vergleich zur Verfügung.
|
onChanged(self, obj, prop)
|
Wird aufgerufen, nachdem ein Eigenschaftswert geändert wurde | prop ist der Name der zu ändernden Eigenschaft, nicht das Eigenschaftsobjekt selbst.
|
onDocumentRestored(self, obj)
|
Wird aufgerufen, nachdem ein Dokument wiederhergestellt oder ein FeaturePython-Objekt kopiert wurde. | Gelegentlich können Verweise auf das FeaturePython-Objekt aus der Klasse oder auf die Klasse aus dem FeaturePython-Objekt unterbrochen sein, da die Methode __init__() der Klasse beim Wiederherstellen des Objekts nicht aufgerufen wird. Das Hinzufügen von self.Object = obj oder obj.Proxy = self löst diese Probleme oft.
|
Es kommt nicht selten vor, dass Python-Callbacks nicht wie vorgesehen ausgelöst werden. Anfänger in diesem Bereich können jedoch sicher sein, dass das FeaturePython-Callback-System nicht anfällig oder fehlerhaft ist. Wenn Callbacks nicht ausgeführt werden, liegt dies immer daran, dass eine Referenz im zugrunde liegenden Code verloren gegangen oder undefiniert ist. Wenn Callbacks jedoch ohne ersichtlichen Grund fehlschlagen, kann die Angabe von Objekt-/Proxy-Referenzen im Callback onDocumentRestored() (wie in der ersten Tabelle oben angegeben) diese Probleme beheben. Bis man mit dem Callback-System vertraut ist, kann es hilfreich sein, in jedem Callback Print-Anweisungen hinzuzufügen, um während der Entwicklung Meldungen auf der Konsole auszugeben.
Zusätzliche Methoden
Die folgenden Methoden dienen der fortgeschrittenen Verwendung von Python-Proxy-Klassen und werden in den meisten Fällen nicht benötigt.
- mustExecute
- getViewProviderName
- getSubObject
- getSubObjects
- getLinkedObject
- hasChildElement
- isElementVisible
- canLinkProperties
- allowDuplicateLabel
- redirectSubName
- canLoadPartial
- onBeforeChangeLabel
Verfügbare Python-Methoden ermitteln
Innerhalb der L161-L351 FeaturePython Template Class gibt es verschiedene imp-><method name>()-Aufrufe.
Jede davon entspricht einer verfügbaren gebundenen Python-Methode.
Zum Beispiel, imp->execute() in Zeile 193 bedeutet, dass die Methode execute verfügbar ist.
Man beachte, dass getPyObject() und init() Sonderfälle sind und nicht der oben genannten Heuristik folgen.
Siehe auch
- FreeCAD GitHub: FeaturePython.h - public API
- FreeCAD GitHub: FeaturePythonT template class
- FreeCAD Foren-Diskussion: 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