schneller
07-27-2009, 07:23 PM
Hi, I was wondering what the best way was to take an object and transfer its translation and rotation coordinates to another object using MEL.
I had started a script attempting this. The first part where I get the attributes of the selection works, but transfering the attributes does not. Any advice would be appreciated. Thanks!
-----------------------------
//select object
string $newSel[] = `ls -sl`;
print $newSel;
//get attributes
getAttr $newSel.translateX;
getAttr $newSel.translateY;
getAttr $newSel.translateZ;
getAttr $newSel.rotateX;
getAttr $newSel.rotateY;
getAttr $newSel.rotateZ;
//print attributes
print (`getAttr $newSel.translateX` + "\n");
print (`getAttr $newSel.translateY` + "\n");
print (`getAttr $newSel.translateZ` + "\n");
print (`getAttr $newSel.rotateX` + "\n");
print (`getAttr $newSel.rotateY` + "\n");
print (`getAttr $newSel.rotateZ` + "\n");
//declare floats and set them equal to selection attribute values
float $transXvalue = $newSel.translateX;
float $transYvalue = $newSel.translateY;
float $transZvalue = $newSel.translateZ;
float $rotateXvalue = $newSel.rotateX;
float $rotateYvalue = $newSel.rotateY;
float $rotateZvalue = $newSel.rotateZ;
//select object to have translation and rotation coordinates replaced
string $newObj[];
select -add $newObj;
print $newObj;
//set new object attributes to old object
setAttr $newObj.translateX = $transXvalue;
setAttr $newObj.translateY = $transYvalue;
setAttr $newObj.translateZ = $transZvalue;
setAttr $newObj.rotateX = $rotateXvalue;
setAttr $newObj.rotateY = $rotateYvalue;
setAttr $newObj.rotateZ = $rotateZvalue;
//print new object new attributes
print (`getAttr $newObj.translateX` + "\n");
print (`getAttr $newObj.translateY` + "\n");
print (`getAttr $newObj.translateZ` + "\n");
print (`getAttr $newObj.rotateX` + "\n");
print (`getAttr $newObj.rotateY` + "\n");
print (`getAttr $newObj.rotateZ` + "\n");
I had started a script attempting this. The first part where I get the attributes of the selection works, but transfering the attributes does not. Any advice would be appreciated. Thanks!
-----------------------------
//select object
string $newSel[] = `ls -sl`;
print $newSel;
//get attributes
getAttr $newSel.translateX;
getAttr $newSel.translateY;
getAttr $newSel.translateZ;
getAttr $newSel.rotateX;
getAttr $newSel.rotateY;
getAttr $newSel.rotateZ;
//print attributes
print (`getAttr $newSel.translateX` + "\n");
print (`getAttr $newSel.translateY` + "\n");
print (`getAttr $newSel.translateZ` + "\n");
print (`getAttr $newSel.rotateX` + "\n");
print (`getAttr $newSel.rotateY` + "\n");
print (`getAttr $newSel.rotateZ` + "\n");
//declare floats and set them equal to selection attribute values
float $transXvalue = $newSel.translateX;
float $transYvalue = $newSel.translateY;
float $transZvalue = $newSel.translateZ;
float $rotateXvalue = $newSel.rotateX;
float $rotateYvalue = $newSel.rotateY;
float $rotateZvalue = $newSel.rotateZ;
//select object to have translation and rotation coordinates replaced
string $newObj[];
select -add $newObj;
print $newObj;
//set new object attributes to old object
setAttr $newObj.translateX = $transXvalue;
setAttr $newObj.translateY = $transYvalue;
setAttr $newObj.translateZ = $transZvalue;
setAttr $newObj.rotateX = $rotateXvalue;
setAttr $newObj.rotateY = $rotateYvalue;
setAttr $newObj.rotateZ = $rotateZvalue;
//print new object new attributes
print (`getAttr $newObj.translateX` + "\n");
print (`getAttr $newObj.translateY` + "\n");
print (`getAttr $newObj.translateZ` + "\n");
print (`getAttr $newObj.rotateX` + "\n");
print (`getAttr $newObj.rotateY` + "\n");
print (`getAttr $newObj.rotateZ` + "\n");
