Ich benutze: Maya2014 + pyqt4.8 + python2.7
Ich mache eine Anwendung, mit der Sie die Auswahl von Elementen in Maya beschleunigen und vereinfachen können. Ist ein Selektor, den der Benutzer an die Objekte in der Szene anhängen kann. Die Auswahl von Objekten im Fenster führt zur Trennung von Objekten in der Szene. aber im Gegenteil, ich kann nicht finden, wie es geht.
Wie kann man ein Ereignis erfassen, das beim Ändern der Auswahl von Objekten in der Szene auftritt, und das Programm weiter verarbeiten?
3 Antworten
Ich empfehle wirklich, wenn Sie ein ziemlich schweres Zeug machen, dann halten Sie sich von Scriptjob fern. Ich bevorzuge die API
def test(*args, **kwargs):
print "Fooo"
import maya.OpenMaya as OpenMaya
idx = OpenMaya.MEventMessage.addEventCallback("SelectionChanged", test)
#when ever you finish doing your stuff
OpenMaya.MMessage.removeCallback(idx)
Bis ich eine solche lösung gefunden habe, die auf maya api basiert:
self.sJob = cmds.scriptJob(event=['SelectionChanged', self.myFnc])
Dieser Mechanismus erstellt ein Maya-Ereignis, das meine Funktion aufruft, wenn ein Änderungsobjekt ausgewählt wird.
Vielleicht gibt es eine korrektere Option. Zum Beispiel, um Identifokator Fenster Maya zu bekommen und es macht Ihre Veranstaltung. Obwohl ich denke, dass die Verwendung von Maya API auch keine schlechte Option ist. Der einzige Nachteil ist, dass Sie beim Schließen eines Fensters scriptJob folgen und entfernen müssen, aber es ist ein lösbares Problem.
Sie können hierfür den Befehl scriptJob
verwenden.
Mit scriptJob
können Sie Code angeben oder Aktionen ausführen, wenn die angegebene Bedingung erfüllt ist oder ein bestimmtes Ereignis ausgelöst wird.
Für Auswahländerungen verwenden Sie das Flag event
mit "SelectionChanged"
als Parameter:
myScriptJobID = scriptJob(event=["SelectionChanged", your_function])
# You can later use this scriptJob's id to modify or delete it like so:
scriptJob(kill=myScriptJobID)
Weitere Optionen finden Sie in den Dokumenten.
Verwandte Fragen
Neue Fragen
python
Python ist eine dynamisch typisierte Mehrzweck-Programmiersprache mit mehreren Paradigmen. Es wurde entwickelt, um schnell zu lernen, zu verstehen, zu verwenden und eine saubere und einheitliche Syntax durchzusetzen. Bitte beachten Sie, dass Python 2 ab dem 01.01.2020 offiziell nicht mehr unterstützt wird. Fügen Sie für versionenspezifische Python-Fragen das Tag [python-2.7] oder [python-3.x] hinzu. Wenn Sie eine Python-Variante (z. B. Jython, PyPy) oder eine Bibliothek (z. B. Pandas und NumPy) verwenden, fügen Sie diese bitte in die Tags ein.