Script to set DOF on and rotation limits off


#1

Hi all,
I’m still looking for a functioning script that will go through a full skeleton hierarchy and enable all DOF:
setAttr “joint1.jointTypeX” 1;
setAttr “joint1.jointTypeY” 1;
setAttr “joint1.jointTypeZ” 1;

and turn off any rotation limits:
transformLimits -rx -360 360 -erx 0 0 joint1;
transformLimits -ry -360 360 -ery 0 0 joint1;
transformLimits -rz -360 360 -erz 0 0 joint1;

Thinking perhaps begin with select ls -type joint
or based on a selected hierarchy adding to an array?


#2

this code works for every transform node in your selection…

string $sel[] = ls -sl;

for ($obj in $sel){
transformLimits -rx -360 360 -erx 0 0 $obj;
transformLimits -ry -360 360 -ery 0 0 $obj;
transformLimits -rz -360 360 -erz 0 0 $obj;
}

this code works for every joint in your scene…

string $jnt[] = ls -type joint;

for ($obj in $jnt){
transformLimits -rx -360 360 -erx 0 0 $obj;
transformLimits -ry -360 360 -ery 0 0 $obj;
transformLimits -rz -360 360 -erz 0 0 $obj;
}

:keenly: :keenly: :keenly:


#3

Hi,
So the rotation limit worked. But, when I tried adding in the enabling of the degrees of freedom bit, it gave me the error that ‘Invalid object name: $obj.jointTypeX’
Here is the code I entered:

string $jnt[] = `ls -type joint`;

for ($obj in $jnt){
transformLimits -rx -360 360 -erx 0 0 $obj;
transformLimits -ry -360 360 -ery 0 0 $obj;
transformLimits -rz -360 360 -erz 0 0 $obj;
setAttr "$obj.jointTypeX" 1;
setAttr "$obj.jointTypeY" 1;
setAttr "$obj.jointTypeZ" 1;
}

Perhaps you could see where I’m going wrong?


#4

Fixed it…

string $jnt[] = `ls -type joint`;

for ($obj in $jnt){
transformLimits -rx -360 360 -erx 0 0 $obj;
transformLimits -ry -360 360 -ery 0 0 $obj;
transformLimits -rz -360 360 -erz 0 0 $obj;
setAttr ($obj + ".jointTypeX") 1;
setAttr ($obj + ".jointTypeY") 1;
setAttr ($obj + ".jointTypeZ") 1;
};