我正在为我的某些节点添加一个自定义属性作为枚举列表。我可以使用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的界面中。
任何关于如何更优雅地做到这一点的建议都将不胜感激。
答案 0 :(得分:0)
您正在做的事情 - 删除属性并重新添加 - 遗憾的是,这是唯一的方法。 Maya enums非常蹩脚。
脚本完成后属性应该正常工作 - 您可能需要取消选择并重新选择它才能正确刷新属性编辑器。脚本运行后,您可以在对象上使用listAttr -ud
进行检查 - 即使UI未刷新,您也应该在结果中看到属性名称。