从 3ds max 导入 fbx 后,mel 在 maya 中删除属性
a mel delete attributes in maya after import fbx form 3dmax
20180509
感谢您的信息。
我就这样完成了梅尔。
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后。
这些对象有一些我不需要的属性。
"mrFBXASC032displacementFBXASC032useFBXASC032globalFBXASC032settings"
"mrFBXASC032displacementFBXASC032viewFBXASC032dependent"
"mrFBXASC032displacementFBXASC032method"
"mrFBXASC032displacementFBXASC032smoothingFBXASC032on"
"mrFBXASC032displacementFBXASC032edgeFBXASC032length"
"mrFBXASC032displacementFBXASC032maxFBXASC032displace"
"mrFBXASC032displacementFBXASC032parametricFBXASC032subdivisionFBXASC032level"
"UDP3DSMAX"
"MaxHandle"
"currentUVSet"
我试着让梅尔删除它们。
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";
}
}
如果我select所有对象。 mel 将显示如下错误消息:
does not have attribute 'UDP3DSMAX'
因为这些对象没有相同的节点。
如何正确删除所有属性?
在调用deleteAttr
之前,可以先检查属性是否存在:
int $attrExists = `attributeQuery -node yourObject -exists "yourAttr"`;
if ($attrExists) {
deleteAttr -at "yourAttr" youObject;
}
感谢帮助
像这样的最后一个梅尔
global proc SB_CheckFile()
{
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];
}
}
select (`ls -type "transform"`);
string $allObj[] =`ls -sl -fl `;
for($i=0;$i<`size$allObj`;$i++)
{
select -r $allObj[$i];
int $attrExists = `attributeQuery -node $allObj[$i] -exists "currentUVSet"`;
if ($attrExists)
{
deleteAttr -at "currentUVSet" $allObj[$i];
}
}
}
如果使用 catch 命令,可以稍微降低复杂性:
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]`);
}
}
这样您就不必关心不存在的属性,当然您也不会看到可能发生的其他错误。
20180509
感谢您的信息。 我就这样完成了梅尔。
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后。 这些对象有一些我不需要的属性。
"mrFBXASC032displacementFBXASC032useFBXASC032globalFBXASC032settings"
"mrFBXASC032displacementFBXASC032viewFBXASC032dependent"
"mrFBXASC032displacementFBXASC032method"
"mrFBXASC032displacementFBXASC032smoothingFBXASC032on"
"mrFBXASC032displacementFBXASC032edgeFBXASC032length"
"mrFBXASC032displacementFBXASC032maxFBXASC032displace"
"mrFBXASC032displacementFBXASC032parametricFBXASC032subdivisionFBXASC032level"
"UDP3DSMAX"
"MaxHandle"
"currentUVSet"
我试着让梅尔删除它们。
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";
}
}
如果我select所有对象。 mel 将显示如下错误消息:
does not have attribute 'UDP3DSMAX'
因为这些对象没有相同的节点。 如何正确删除所有属性?
在调用deleteAttr
之前,可以先检查属性是否存在:
int $attrExists = `attributeQuery -node yourObject -exists "yourAttr"`;
if ($attrExists) {
deleteAttr -at "yourAttr" youObject;
}
感谢帮助
像这样的最后一个梅尔
global proc SB_CheckFile()
{
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];
}
}
select (`ls -type "transform"`);
string $allObj[] =`ls -sl -fl `;
for($i=0;$i<`size$allObj`;$i++)
{
select -r $allObj[$i];
int $attrExists = `attributeQuery -node $allObj[$i] -exists "currentUVSet"`;
if ($attrExists)
{
deleteAttr -at "currentUVSet" $allObj[$i];
}
}
}
如果使用 catch 命令,可以稍微降低复杂性:
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]`);
}
}
这样您就不必关心不存在的属性,当然您也不会看到可能发生的其他错误。