你能改变Maya中自定义属性的枚举列表吗?

时间:2016-07-12 15:04:44

标签: maya mel

我正在为我的某些节点添加一个自定义属性作为枚举列表。我可以使用addAttr轻松完成此操作。但我没有看到以后添加新枚举值或更改枚举列表的方法。这可能吗?

我找到了一种方法,但似乎应该有一种更简单的方法。对于我的解决方法,如果属性存在,我抓住它的值并删除该属性。然后我将修改后的属性添加回节点并将其值设置为旧值。通过更改$ enumValues,我可以编辑枚举列表。 (注意我只计划添加值而不是删除值)此脚本演示了我的解决方法:

string $attrName = "MaterialType";
string $enumValues = "Water:Sky:Terrain:Building:Road:";
string $selected[] = `ls -sl`;
if(`size $selected` == 1)
{
    string $attrFullName = $selected[0]+"."+$attrName;
    $existingValue = 0;
    if(attributeExists($attrName, $selected[0]))
    {
        $existingValue = `getAttr $attrFullName`;
        deleteAttr $attrFullName;
    }   
    addAttr -ln $attrName -at "enum" -en $enumValues $selected;
    setAttr $attrFullName $existingValue;
}
else
{
    print "You must have 1 object and only 1 object selected\n";
};

值得一提的是,如果我运行此脚本,它会更改枚举值,但在关闭文件并重新打开文件之前,这些更改不会显示在Maya的界面中。

任何关于如何更优雅地做到这一点的建议都将不胜感激。

1 个答案:

答案 0 :(得分:0)

您正在做的事情 - 删除属性并重新添加 - 遗憾的是,这是唯一的方法。 Maya enums非常蹩脚。

脚本完成后属性应该正常工作 - 您可能需要取消选择并重新选择它才能正确刷新属性编辑器。脚本运行后,您可以在对象上使用listAttr -ud进行检查 - 即使UI未刷新,您也应该在结果中看到属性名称。