Python(Maya)将标志作为变量传递

2024-10-05 14:22:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图运行一个命令,具体的标志取决于我在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标志(attrbute类型)以及en标志(枚举名称)或min和max标志。不幸的是,它没有将变量识别为标志,并返回“SyntaxError:non keyword arg after keyword arg”错误。必须有一种方法来构建命令,然后再运行它,但是我已经很久没有编写任何UI项了,而我却一片空白。在

谢谢你的时间。在

PS:我还没到那么远,但我怀疑最小值/最大值不会被识别为整数。如果你有一个解决这个问题的建议,它将有助于下一个潜在的障碍。在


Tags: 命令ui类型属性标志type选项arg
1条回答
网友
1楼 · 发布于 2024-10-05 14:22:50

将标志传递给maya命令的标准方法是使用python的内置**args语法:

mesh_options = {'type':'mesh', 'long':True } 
meshes = cmds.ls(**mesh_options)

相当于

^{pr2}$

如果你想要

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)

相关问题 更多 >