我有一个脚本,要求用户使用复选框选择一个对称轴。然后我希望在另一个函数中使用该结果来创建镜像工具。到目前为止,当我尝试查询复选框时,我一直得到以下错误:
RuntimeError: file line 81: Object
xAxisBox
not found
我是初学者,所以我很抱歉,如果这是显而易见的,但我错在哪里?
相关代码如下:
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
我没有玛雅,所以我不能为你测试这个,但看看另一个问题的答案,看起来你需要使用实际的python变量没有引号(即xAxisBox
而不是'xAxisBox'
),像这样:
xCheck = cmds.checkBox(xAxisBox, query=True, value = True)
如果您使用cmd,您可以引用硬编码的ui名称:
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))