20180509
Thanks for your information. I'd finished mel like that.
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];
}
}
Show another error
Cannot delete static attribute 'currentUVSet' from node 'ObjectName'
Does children of a compound attribute cannot be deleted?
Or is it not nesserary to delete attribute 'currentUVSet'?
20180508
After I import fbx file to maya from 3dmax. Those objects have some attributes that I don't need.
"mrFBXASC032displacementFBXASC032useFBXASC032globalFBXASC032settings"
"mrFBXASC032displacementFBXASC032viewFBXASC032dependent"
"mrFBXASC032displacementFBXASC032method"
"mrFBXASC032displacementFBXASC032smoothingFBXASC032on"
"mrFBXASC032displacementFBXASC032edgeFBXASC032length"
"mrFBXASC032displacementFBXASC032maxFBXASC032displace"
"mrFBXASC032displacementFBXASC032parametricFBXASC032subdivisionFBXASC032level"
"UDP3DSMAX"
"MaxHandle"
"currentUVSet"
I try to have a mel delete them.
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";
}
}
If I select all objects. mel will show error message like :
does not have attribute 'UDP3DSMAX'
Because those objects don't have the same nodes. How to delete all attributes at correct way?
You can reduce the complexity a littel bit if you use the catch command:
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]`);
}
}
This way you do not have to care about non existing attributes, but of course you do not see other errors that may occurs.