Python (Maya) 将标志作为变量传递
Python (Maya) pass flags as variables
我正在尝试 运行 一个命令,具体标志取决于我在 UI 中选择的选项。具体来说,这是针对 Maya 的,我正在尝试在选定对象上创建一个新属性。问题是,根据我要创建的属性类型,我会有不同的标志,而且我不确定如何将这些标志传递给命令本身。这是我遇到问题的相关代码
TYPENum= #gets value from Radio button group
if TYPENum==1:
TYPE='at="enum", en="Off:On"'
elif TYPENum==2:
TYPE='at="float", min=0, max=1'
cmds.addAttr(selectedObject, ln="AttrNameTextField", TYPE, k=True")
我希望 TYPE 能够插入 at 标志(属性类型)以及 en 标志(枚举名称)或最小和最大标志。不幸的是,它没有将变量识别为标志,并且 returns 出现 "SyntaxError: non-keyword arg after keyword arg" 错误。必须有一种方法来构建命令然后 运行 它,但是我已经很长时间没有编写任何 UI 项目,我正在画一个空白。
感谢您的宝贵时间。
PS:我还没有走那么远,但我怀疑 min/max 值不会被识别为整数。如果您有解决该问题的建议,这将有助于解决下一个潜在障碍。
将标志传递给 Maya 命令的标准方法是使用 python 的内置 **args 语法:
mesh_options = {'type':'mesh', 'long':True }
meshes = cmds.ls(**mesh_options)
等同于
cmds.ls(long=True, type='mesh')
如果你想要这样的东西
opts = {"ln":"AttrNameTextField","k":True}
if typenum == 1:
opts["at"] = "enum"
opts["en"] = "Off:On"
else:
opts["at"] = "float"
opts["min"] = 0
opts["max"] = 1
cmds.addAttr(selectedObject, **opts)
我正在尝试 运行 一个命令,具体标志取决于我在 UI 中选择的选项。具体来说,这是针对 Maya 的,我正在尝试在选定对象上创建一个新属性。问题是,根据我要创建的属性类型,我会有不同的标志,而且我不确定如何将这些标志传递给命令本身。这是我遇到问题的相关代码
TYPENum= #gets value from Radio button group
if TYPENum==1:
TYPE='at="enum", en="Off:On"'
elif TYPENum==2:
TYPE='at="float", min=0, max=1'
cmds.addAttr(selectedObject, ln="AttrNameTextField", TYPE, k=True")
我希望 TYPE 能够插入 at 标志(属性类型)以及 en 标志(枚举名称)或最小和最大标志。不幸的是,它没有将变量识别为标志,并且 returns 出现 "SyntaxError: non-keyword arg after keyword arg" 错误。必须有一种方法来构建命令然后 运行 它,但是我已经很长时间没有编写任何 UI 项目,我正在画一个空白。
感谢您的宝贵时间。
PS:我还没有走那么远,但我怀疑 min/max 值不会被识别为整数。如果您有解决该问题的建议,这将有助于解决下一个潜在障碍。
将标志传递给 Maya 命令的标准方法是使用 python 的内置 **args 语法:
mesh_options = {'type':'mesh', 'long':True }
meshes = cmds.ls(**mesh_options)
等同于
cmds.ls(long=True, type='mesh')
如果你想要这样的东西
opts = {"ln":"AttrNameTextField","k":True}
if typenum == 1:
opts["at"] = "enum"
opts["en"] = "Off:On"
else:
opts["at"] = "float"
opts["min"] = 0
opts["max"] = 1
cmds.addAttr(selectedObject, **opts)