2017-08-26 3 views
0

Im Moment versuche ich ein Skript zu erstellen, das die Pivotausrichtung in Maya ändert. (Diese Funktion ist bereits in der Maya Modeling Toolbox, aber ich möchte eine benutzerdefinierte und vereinfachte Version davon erstellen). Allerdings bekomme ich Probleme mit meiner Funktion. Dies ist der Code:Maya-Python manipMoveContext

cmds.optionMenu(label = 'Pivot', changeCommand = pivotOrient) 

cmds.menuItem(label='Object',) 
cmds.menuItem(label='World') 
cmds.menuItem(label='Component') 
cmds.menuItem(label='Normal') 


def pivotOrient(p): 
    if p == 'Object': 
     cmds.manipMoveContext(e= True, mode= 0) 
    elif p == 'World': 
     cmds.manipMoveContext(e= True, mode= 2) 
    elif p == 'Component': 
     cmds.manipMoveContext(e= True, mode= 10) 
    else: 
     cmds.manipMoveContext(e= True, mode= 3) 

Es sagt "# Fehler: Runtime: Dateizeile 40: Kein Objekt Name angegeben #."

Können Sie mir helfen mit diesem Problem? Es tut mir leid, dass ich immer noch ein Anfänger bei Python und Maya Scripting bin. Danke im Voraus.

+0

möchten Sie vielleicht den Titel Ihrer Frage ändern, da der Fehler, den Sie bekommen, mit dem So benutzt du den 'manipMoveContext' Befehl; nichts mit drop-downs zu tun :) – mapofemergence

Antwort

2

manipMoveContext Der Befehl erfordert das erste Argument den Kontext zu geben, wenn sie in edit oder query Modus (siehe: http://help.autodesk.com/cloudhelp/2016/ENU/Maya-Tech-Docs/CommandsPython/manipMoveContext.html#hExamples).

Im einfachsten Fall können Sie 'Move' als erstes Argument für Ihre Anrufe, die als solche verwendet werden: cmds.manipMoveContext('Move', e=True, mode=0)

Aber für weniger trivial Szenarien (oder auch nur Ihren Code zu verallgemeinern und es robuster machen) Sie müssen verstehen, wie Manipulatoren und Kontexte funktionieren, und Ihrer Funktion pivotOrient Logik hinzufügen.

lediglich als Hinweis auf das, was ich meine, Sie einen Blick auf diese haben können:

Versuchen Sie auch, mit diesem zu spielen:

curctx = cmds.currentCtx() 
print curctx 
if cmds.superCtx(curctx, ex=1): 
    ctx = cmds.superCtx(curctx, q=1) 
    typ = cmds.contextInfo(ctx, q=1, c=1) 
    print ctx, typ 
+0

Das doc eigentlich zu alt;) http://help.autodesk.com/cloudhelp/2016/ENU/Maya-Tech-Docs/CommandsPython/manipMoveContext.html – Achayan

+0

du hast recht @ Achayan, ich habe gerade die Antwort bearbeitet. Ich gebe zu, dass ich selten nach der Maya-Ausgabe suche, wenn ich mir die Dokumente anschaue ... für diese Art von Sachen hat sich das eine Zeit lang nicht geändert ... :) – mapofemergence