首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导入fbx表单3dmax后maya中的mel删除属性

导入fbx表单3dmax后maya中的mel删除属性
EN

Stack Overflow用户
提问于 2018-05-08 04:25:35
回答 2查看 916关注 0票数 0

20180509

感谢您的信息。我就这样结束了梅尔。

代码语言:javascript
复制
select -all -hi;
string $allObj[] =`ls -sl -fl `;
for($i=0;$i<`size$allObj`;$i++)
    {
    select -r $allObj[$i];
    int $attrExists = `attributeQuery -node $allObj[$i] -exists "mrFBXASC032displacementFBXASC032useFBXASC032globalFBXASC032settings"`;
if ($attrExists) {
    deleteAttr -at "mrFBXASC032displacementFBXASC032useFBXASC032globalFBXASC032settings" $allObj[$i];
}
    int $attrExists = `attributeQuery -node $allObj[$i] -exists "mrFBXASC032displacementFBXASC032viewFBXASC032dependent"`;
if ($attrExists) {
    deleteAttr -at "mrFBXASC032displacementFBXASC032viewFBXASC032dependent" $allObj[$i];
}
    int $attrExists = `attributeQuery -node $allObj[$i] -exists "mrFBXASC032displacementFBXASC032method"`;
if ($attrExists) {
    deleteAttr -at "mrFBXASC032displacementFBXASC032method" $allObj[$i];
}
    int $attrExists = `attributeQuery -node $allObj[$i] -exists "mrFBXASC032displacementFBXASC032smoothingFBXASC032on"`;
if ($attrExists) {
    deleteAttr -at "mrFBXASC032displacementFBXASC032smoothingFBXASC032on" $allObj[$i];
}
    int $attrExists = `attributeQuery -node $allObj[$i] -exists "mrFBXASC032displacementFBXASC032edgeFBXASC032length"`;
if ($attrExists) {
    deleteAttr -at "mrFBXASC032displacementFBXASC032edgeFBXASC032length" $allObj[$i];
}
    int $attrExists = `attributeQuery -node $allObj[$i] -exists "mrFBXASC032displacementFBXASC032maxFBXASC032displace"`;
if ($attrExists) {
    deleteAttr -at "mrFBXASC032displacementFBXASC032maxFBXASC032displace" $allObj[$i];
}
    int $attrExists = `attributeQuery -node $allObj[$i] -exists "mrFBXASC032displacementFBXASC032parametricFBXASC032subdivisionFBXASC032level"`;
if ($attrExists) {
    deleteAttr -at "mrFBXASC032displacementFBXASC032parametricFBXASC032subdivisionFBXASC032level" $allObj[$i];
}
    int $attrExists = `attributeQuery -node $allObj[$i] -exists "UDP3DSMAX"`;
if ($attrExists) {
    deleteAttr -at "UDP3DSMAX" $allObj[$i];
}
    int $attrExists = `attributeQuery -node $allObj[$i] -exists "MaxHandle"`;
if ($attrExists) {
    deleteAttr -at "MaxHandle" $allObj[$i];
}
    int $attrExists = `attributeQuery -node $allObj[$i] -exists "MaxVisibility"`;
if ($attrExists) {
    deleteAttr -at "MaxVisibility" $allObj[$i];
}
    int $attrExists = `attributeQuery -node $allObj[$i] -exists "currentUVSet"`;
if ($attrExists) {
    deleteAttr -at "currentUVSet" $allObj[$i];
}
}

显示另一个错误Cannot delete static attribute 'currentUVSet' from node 'ObjectName'

复合属性的子属性不能删除吗?

还是删除属性“currentUVSet”不是无意义的?

20180508

在我从3dmax将fbx文件导入到maya之后。这些对象有一些我不需要的属性。

代码语言:javascript
复制
"mrFBXASC032displacementFBXASC032useFBXASC032globalFBXASC032settings"
"mrFBXASC032displacementFBXASC032viewFBXASC032dependent"
"mrFBXASC032displacementFBXASC032method"
"mrFBXASC032displacementFBXASC032smoothingFBXASC032on"
"mrFBXASC032displacementFBXASC032edgeFBXASC032length"
"mrFBXASC032displacementFBXASC032maxFBXASC032displace"
"mrFBXASC032displacementFBXASC032parametricFBXASC032subdivisionFBXASC032level"
"UDP3DSMAX"
"MaxHandle"
"currentUVSet"

我试着让梅尔删除它们。

代码语言:javascript
复制
string $allObj[] =`ls -sl -fl `;
for($i=0;$i<`size$allObj`;$i++)
    {
    select -r $allObj[$i];
    deleteAttr -at "mrFBXASC032displacementFBXASC032useFBXASC032globalFBXASC032settings";
    deleteAttr -at "mrFBXASC032displacementFBXASC032viewFBXASC032dependent";
    deleteAttr -at "mrFBXASC032displacementFBXASC032method";
    deleteAttr -at "mrFBXASC032displacementFBXASC032smoothingFBXASC032on";
    deleteAttr -at "mrFBXASC032displacementFBXASC032edgeFBXASC032length";
    deleteAttr -at "mrFBXASC032displacementFBXASC032maxFBXASC032displace";
    deleteAttr -at "mrFBXASC032displacementFBXASC032parametricFBXASC032subdivisionFBXASC032level";
    deleteAttr -at "UDP3DSMAX";
    deleteAttr -at "MaxHandle";
    deleteAttr -at "currentUVSet";
    }
}

如果我选择了所有对象。mel将显示错误消息,如:does not have attribute 'UDP3DSMAX'

因为这些对象没有相同的节点。如何正确删除所有属性?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-09 08:16:10

如果您使用catch命令,您可以降低一个littel位的复杂性:

代码语言:javascript
复制
string $attr[] = {"mrFBXASC032displacementFBXASC032useFBXASC032globalFBXASC032settings"
"mrFBXASC032displacementFBXASC032viewFBXASC032dependent"
"mrFBXASC032displacementFBXASC032method"
"mrFBXASC032displacementFBXASC032smoothingFBXASC032on"
"mrFBXASC032displacementFBXASC032edgeFBXASC032length"
"mrFBXASC032displacementFBXASC032maxFBXASC032displace"
"mrFBXASC032displacementFBXASC032parametricFBXASC032subdivisionFBXASC032level"
"UDP3DSMAX"
"MaxHandle"
"currentUVSet"};
string $sel[] = `ls -sl`;
for($i = 0; $i < size($sel); $i++)
{
    for( $k = 0; $k < size($attr); $k++)
    {
        catch(`deleteAttr -at $attr[$k] $sel[$i]`);
    }
}

这样,您就不必关心不存在的属性,但是您当然不会看到可能发生的其他错误。

票数 2
EN

Stack Overflow用户

发布于 2018-05-08 09:28:38

在调用deleteAttr之前,可以先检查属性是否存在:

代码语言:javascript
复制
int $attrExists = `attributeQuery -node yourObject -exists "yourAttr"`;
if ($attrExists) {
    deleteAttr -at "yourAttr" youObject;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50225825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档