maya python获取并使用复选框的结果

时间:2015-10-23 18:36:19

标签: python maya

我有一个脚本要求用户使用复选框选择对称轴。然后,我希望在另一个函数中使用该结果来创建镜像工具。到目前为止,当我尝试查询复选框时,我不断收到以下错误:

  

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 个答案:

答案 0 :(得分:3)

我没有Maya,所以我无法为你测试这个,但是看看another question的答案,看起来你需要使用没有引号的实际python变量(即xAxisBox而不是'xAxisBox'),如下所示:

xCheck = cmds.checkBox(xAxisBox, query=True, value = True)

答案 1 :(得分:0)

如果您使用cmds,则可以引用硬编码的ui名称:

Security [securityName=Apple, marketCap=130000, profit=Profit [oneMonthProfit=1.2, threeMonthProfit=-2.0, sixMonthProfit=3.0]]

但是对于pymel你可以在没有硬编码的情况下尝试这个:

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,我建议重写Blendy函数,如:

import pymel.core as pm

最后也是最重要的是你可以使用class来存储值

从其他资源的neelz回答: 使用模块def Blendy(xbox, ybox, zbox): print xbox.getValue(), ybox.getValue(), zbox.getValue() ,该方案与Callback相似:

partial