Майя Python получить и использовать результат флажок
У меня есть скрипт, который просит пользователя выбрать ось симметрии с помощью флажков. Затем я хотел бы использовать этот результат в другой функции для создания инструмента зеркалирования. До сих пор, когда я пытаюсь запросить флажок, я получаю следующую ошибку:
RuntimeError: строка файла 81: объект
xAxisBox
не найдено
Я новичок, поэтому прошу прощения, если это очевидно, но где я иду не так?
Соответствующий код выглядит следующим образом:
xAxisBox = cmds.checkBox(l="x")
yAxisBox = cmds.checkBox(l="y")
zAxisBox = cmds.checkBox(l="z")
btAxis=cmds.button( label = "Do the thing!", command = "Blendy();")
def Blendy ():
xCheck = cmds.checkBox('xAxisBox', query=True, value = True)
yCheck = cmds.checkBox('yAxisBox', query=True, value = True)
zCheck = cmds.checkBox('zAxisBox', query=True, value = True)
print xCheck
print yCheck
print zCheck
2 ответа
У меня нет Maya, поэтому я не могу проверить это для вас, но, глядя на ответ на другой вопрос, похоже, вам нужно использовать фактическую переменную python без кавычек (т.е. xAxisBox
вместо 'xAxisBox'
), как это:
xCheck = cmds.checkBox(xAxisBox, query=True, value = True)
Если вы используете cmds, вы можете ссылаться на жестко закодированные имена пользовательского интерфейса:
xAxisBox = cmds.checkBox("xAxisBox", l="x")
yAxisBox = cmds.checkBox("yAxisBox", l="y")
zAxisBox = cmds.checkBox("zAxisBox", l="z")
btAxis = cmds.button(label="Do the thing!", command=Blendy)
def Blendy ():
xCheck = cmds.checkBox('xAxisBox', query=True, value=True)
yCheck = cmds.checkBox('yAxisBox', query=True, value=True)
zCheck = cmds.checkBox('zAxisBox', query=True, value=True)
print xCheck
print yCheck
print zCheck
но с pymel вы можете попробовать это без жесткого кодирования:
xAxisBox = pm.checkBox(l="x")
yAxisBox = pm.checkBox(l="y")
zAxisBox = pm.checkBox(l="z")
btAxis = pm.button(
label="Do the thing!",
command=pm.Callback(Blendy,
xAxis, yAxis, zAxis)
)
def Blendy (xbox, ybox, zbox):
xCheck = cmds.checkBox(str(xbox), query=True, value=True)
yCheck = cmds.checkBox(str(ybox), query=True, value=True)
zCheck = cmds.checkBox(str(zbox), query=True, value=True)
print xCheck
print yCheck
print zCheck
Вы можете импортировать Pymel import pymel.core as pm
но если вы будете использовать pymel, я бы рекомендовал переписать функцию Blendy:
def Blendy(xbox, ybox, zbox):
print xbox.getValue(), ybox.getValue(), zbox.getValue()
и последнее, и не в последнюю очередь вы можете использовать класс для хранения значений
и ответ от neelz с другого ресурса: использование модуля partial
схема похожа на Callback:
from functools import partial
cmds.checkBox(onCommand=partial(func_without_parenthesizes, arg, arg))