I eine windowUI mit einem Knopf 2 Funktionen auszuführen gemacht, so habe ich eine neue Funktion definiert, um die anderen 2Python Maya, Funktionsaufruf-2-Funktionen, Kraft laufen beide
def addSlider_splitLoop():
addSlider()
splitLoop()
mc.button(label ='Combo' , command = 'addSlider_splitLoop()')
laufen, wenn die Taste gedrückt wird, nur 1-Funktion funktioniert:
wenn nichts wird der Befehl nur dann ausgewählt wird mit dem addSlider() -Funktion,
wenn die Polygonschleife nur den Befehl ausgewählt wird, läuft die Split Loop() Funktion
, die tatsächlich Sinn machen, aber hilft mir nicht, und ändert die Reihenfolge der Funktionen ot auch nicht hilft
ich möchte es zwingen, beide Funktionen ausführen, wie kann ich mach das?
eigentlich die beste Sache wäre, die addSlider() zu haben, nur wenn die splitLoop() funktioniert, aber ich bin ein echter Anfänger und ich habe keine Ahnung, wie dies zu tun ... zwingen, beide Funktionen auszuführen könnte eine schmutzige Lösung sein, ist aber im Moment für mich genug
dies der vollständige Code ist sowieso (die Combo-Taste ist nur zum Testen)
import maya.cmds as mc
def addSlider_splitLoop():
addSlider()
splitLoop()
def addSlider():
mc.floatSliderGrp(minValue = 1.00 , maxValue = 99.00 , value = 50.00 , field = True)
def splitLoop():
mc.ConvertSelectionToContainedEdges()
mc.polySplitRing(sma = 180 , wt = 0.5)
mc.polyDuplicateEdge(ch = True , of = loopDistance())
#addSlider()
def doubleLoop():
mc.ConvertSelectionToContainedEdges()
mc.polySplitRing(sma = 180 , wt = 0.5)
mc.polyDuplicateEdge(ch = True , of = loopDistance())
mc.polyDelEdge(e = False, cv = True,)
#addSlider()
def loopDistance():
distance = mc.floatSliderGrp('LoopDistanceValue' , query = True, value = True)
convertedDistance = distance/100
return convertedDistance
def splitLoopUI():
if mc.window('splitLoopUI' , exists = True):
mc.deleteUI('splitLoopUI')
mc.window('splitLoopUI')
mc.frameLayout(label=' set loop distance')
mc.floatSliderGrp('LoopDistanceValue' , minValue = 1.00 , maxValue = 99.00 , value = 50.00 , field = True)
mc.button(label ='Triple Loop' , command = 'splitLoop()')
mc.button(label ='Double Loop' , command = 'doubleLoop()')
mc.button(label ='Combo' , command = 'addSlider_splitLoop()')
mc.text(label=' + edit loop distance + ')
mc.scrollLayout('scrollLayout')
mc.columnLayout(adjustableColumn=True)
mc.showWindow('splitLoopUI')
splitLoopUI()
Danke, ich weiß, dass mein addSlider() noch keine Auswirkungen hat, ich wollte es später mit der Channelbox verknüpfen (noch nicht sicher, wie ich das letzte bekommen soll) ein), aber zuerst wollte ich überprüfen, ob ich einen neuen Slider der Benutzeroberfläche für jedes Mal, wenn ich den Befehl ausführen kann Sie haben Recht, der Slider wird jedes Mal erstellt, nur nicht in meinem Fenster, nur das erste Mal, dass ich Drücke den Knopf, der Slider erscheint im richtigen Fenster, jedes zweite Mal ist woanders, was ich nicht sehen kann ... wie kann ich den Schieberegler im richtigen Fenster erstellen lassen? – gangarone
Sie müssen den Namen des Layouts dort speichern, wo Sie es haben wollen, und 'mc.setParent()' verwenden, um es zu aktivieren, bevor Sie den neuen Schieberegler – theodox
einfügen, der perfekt funktioniert! Danke! – gangarone