2017-11-06 6 views
2

Ich habe gerade erst angefangen, MEL-Scripting zu lernen, und ich schabe kaum die Grundlagen. Aber vorerst kann ich mein eigenes Skript schreiben, das das Anzeigen/Verbergen von Objekten in Maya 2015 ermöglicht. Das Problem, mit dem ich jetzt konfrontiert bin, ist, dass ich ein Master-Kontrollkästchen haben möchte, das andere Checkboxen an- und abschaltet. Die Methode, die ich jetzt habe, ermöglicht mir nur, eine Kinder-Checkbox zu ändern, aber nicht den Rest.Checkbox, die andere Checkboxen deaktiviert - Maya MEL

ETC - None Kontrollkästchen ist on. Alle anderen untergeordneten Kontrollkästchen sind off. None Kontrollkästchen ist off. Alle anderen Kinder sind on. Gerade jetzt kann ich es schaffen, eine Kinder-Checkbox zu bekommen, um zwischen on und off mit dem Master None Checkbox umzuschalten.

Hier ist mein Code:

checkBox -label "None" -align "center" -v false -onCommand "OnNoneProcedure" -offCommand "offNoneProcedure" -changeCommand "checkBox -edit -value (!#1) checkboxNurbsCurves"; 
checkBox -label "NurbsCurves" -align "center" -v true -onCommand "OnNurbsCurvesProcedure" -offCommand "offNurbsCurvesProcedure" checkboxNurbsCurves; 

Bin ich mit der changecommand Methode die richtige Art und Weise zu tun? Wenn ja, wie bekomme ich die anderen Kinder Kontrollkästchen zu on und off? Oder frage ich die Master-Checkbox None -v und dann die Option -v von None, um das Kontrollkästchen -v von Kindern zu aktivieren?

Antwort

1

wahrscheinlich am einfachsten wäre es, eine Prozedur zu erstellen, die alle gewünschten Kontrollkästchen in den gewünschten Zustand versetzt und diese Prozedur dann als changeCommand angibt.

Um dies zum Laufen zu bringen, werden Sie wahrscheinlich die Kontrollkästchen benennen und/oder in einer String-Array-Variablen speichern, die Sie durchlaufen können, um sie in Ihrer Prozedur zu setzen ... Zum Glück ist das wirklich einfach Der checkbox-Befehl gibt den vollständigen Namen des erstellten Kontrollkästchens zurück.

+0

danke silent_sight; D Sinn machen, das zu tun. Aber einer meiner Freunde empfiehlt mir, den Befehl -on/off nicht mit changecommand zu verwenden. Es ist entweder das eine oder das andere. Außerdem lehrt er mich, es anders zu machen, indem ich "toggleon" benutze, um den Wert der "Kinder" -Kontrollkästchen zu bearbeiten. Also yeah haha ​​danke für den Tipp! –

+0

yeah, die maya docs für den checkbox-Befehl sagen sogar, nur 'changeCommand' oder' onCommand'/'offCommand' zu verwenden und nicht beides. Im Allgemeinen arbeite ich nicht in Befehlen für Kontrollkästchen, wenn ich ui's erstelle - ich neige dazu, sie einfach als Schalter für verschiedene Optionen zu verwenden und sie abzufragen, wenn der "Ausführungsknopf" angeklickt wird - dh: einige T/F Einstellungen einstellen und dann Verwenden Sie diese, wenn Sie den tatsächlichen Code ausführen, anstatt jedes Kontrollkästchen einen Code ausführen zu lassen. Tut mir leid, dass ich das vorher nicht bemerkt habe ... –

+0

Ich sehe 'toggleon' nicht im Checkbox-Befehl docs ... vielleicht ist es versteckt oder veraltet? Ich dachte, das 'value'-Flag ist das, was Sie verwenden würden, um den aktivierten/deaktivierten Status in Ihrem proc zu setzen, aber wenn alle Ihre Checkboxen einen Befehl ausführen, wenn sie umgeschaltet werden, können sie alle ausgelöst werden; aber Sie könnten wahrscheinlich damit durchkommen, wenn das einzige, was es tut, ist es, alle "Kinder" Checkboxen an/aus zu schalten –

0

okay, ich habe es funktioniert! Haha, mein Freund hat mich während des letzten Schrittes betreut. im Grunde funktioniert das so; 1) Abfrage aktuellen Panel-Zustand 2) Ergebnisse erhalten und in ein Array übergeben 3) Verwenden Sie die Ergebnisse von zurückgegebenen Array in eine andere Prozedur in ein neues Array 4) jedes Ergebnis wenn 0 = off dieses Element, wenn 1 = auf diesem Element diese neue zurückgeben Ergebnis 5) Erstellen Sie die Schaltfläche shelf mit neuem Ergebnis (result = command).

Verwandte Themen