/* NAME: dbLimitInfo.mel VERSION: 1.0 CATEGORY: Rigging FUNCTION: A script that can quickly set transform limits on multiple selected objects USAGE: 1. Copy the dbLimitInfo.mel into your Maya Scripts directory (Usually found in "My Documents\maya\\scripts\"). 2. In the Maya Script Editor, type in "source dbLimitInfo.mel; dbLimitInfo;" AUTHOR: David Bokser E-MAIL: me@davidbokser.com WEBSITE: www.davidbokser.com */ // UI for applying limitations to the transforms of multiple objects // based on the current attributes global proc dbLimitInfo() { if(`window -q -ex dbLimiterUI`) deleteUI -window dbLimiterUI; window -height 140 -title "Quick Limiter" -width 235 dbLimiterUI; columnLayout -columnWidth 227 -height 121 -width 227; rowLayout -columnWidth3 75 75 75 -height 28 -numberOfColumns 3 -width 225; checkBox -height 28 -label "Translate" -width 75 tbox; checkBox -height 28 -label "Rotate" -width 75 rbox; checkBox -height 28 -label "Scale" -width 75 sbox; setParent ..; rowLayout -columnWidth3 75 75 75 -height 28 -numberOfColumns 3 -width 225; checkBox -height 28 -label "X" -width 75 xbox; checkBox -height 28 -label "Y" -width 75 ybox; checkBox -height 28 -label "Z" -width 75 zbox; setParent ..; button -height 28 -label "Set Min" -width 225 -c "doLimitInfo(0)" minButton; button -height 28 -label "Set Max" -width 225 -c "doLimitInfo(1)" maxButton; showWindow; window -e -h 140 -w 235 dbLimiterUI; } global proc doLimitInfo(int $function) { int $t = `checkBox -q -v tbox`; int $r = `checkBox -q -v rbox`; int $s = `checkBox -q -v sbox`; int $x = `checkBox -q -v xbox`; int $y = `checkBox -q -v ybox`; int $z = `checkBox -q -v zbox`; string $selected[] = `ls -sl`; for($obj in $selected) { float $tValue[] = `getAttr ($obj + ".translate")`; float $rValue[] = `getAttr ($obj + ".rotate")`; float $sValue[] = `getAttr ($obj + ".scale")`; float $oldLimitTX[] = `transformLimits -q -tx $obj`; float $oldLimitTY[] = `transformLimits -q -ty $obj`; float $oldLimitTZ[] = `transformLimits -q -tz $obj`; float $oldLimitRX[] = `transformLimits -q -rx $obj`; float $oldLimitRY[] = `transformLimits -q -ry $obj`; float $oldLimitRZ[] = `transformLimits -q -rz $obj`; float $oldLimitSX[] = `transformLimits -q -sx $obj`; float $oldLimitSY[] = `transformLimits -q -sy $obj`; float $oldLimitSZ[] = `transformLimits -q -sz $obj`; int $oldTXEnable[] = `transformLimits -q -etx $obj`; int $oldTYEnable[] = `transformLimits -q -ety $obj`; int $oldTZEnable[] = `transformLimits -q -etz $obj`; int $oldRXEnable[] = `transformLimits -q -erx $obj`; int $oldRYEnable[] = `transformLimits -q -ery $obj`; int $oldRZEnable[] = `transformLimits -q -erz $obj`; int $oldSXEnable[] = `transformLimits -q -esx $obj`; int $oldSYEnable[] = `transformLimits -q -esy $obj`; int $oldSZEnable[] = `transformLimits -q -esz $obj`; select $obj; if($function) { if($t) { if($x) { transformLimits -etx $oldTXEnable[0] 1 -tx $oldLimitTX[0] $tValue[0] $obj; } if($y) { transformLimits -ety $oldTYEnable[0] 1 -ty $oldLimitTY[0] $tValue[1] $obj; } if($z) { transformLimits -etz $oldTZEnable[0] 1 -tz $oldLimitTZ[0] $tValue[2] $obj; } } if($r) { if($x) { transformLimits -erx $oldRXEnable[0] 1 -rx $oldLimitRX[0] $rValue[0] $obj; } if($y) { transformLimits -ery $oldRYEnable[0] 1 -ry $oldLimitRY[0] $rValue[1] $obj; } if($z) { transformLimits -erz $oldRZEnable[0] 1 -rz $oldLimitRZ[0] $rValue[2] $obj; } } if($s) { if($x) { transformLimits -esx $oldSXEnable[0] 1 -sx $oldLimitSX[0] $sValue[0] $obj; } if($y) { transformLimits -esy $oldSYEnable[0] 1 -sy $oldLimitSY[0] $sValue[1] $obj; } if($z) { transformLimits -esz $oldSZEnable[0] 1 -sz $oldLimitSZ[0] $sValue[2] $obj; } } } else { if($t) { if($x) { transformLimits -etx 1 $oldTXEnable[1] -tx $tValue[0] $oldLimitTX[1] $obj; } if($y) { transformLimits -ety 1 $oldTYEnable[1] -ty $tValue[1] $oldLimitTY[1] $obj; } if($z) { transformLimits -etz 1 $oldTZEnable[1] -tz $tValue[2] $oldLimitTZ[1] $obj; } } if($r) { if($x) { transformLimits -erx 1 $oldRXEnable[1] -rx $rValue[0] $oldLimitRX[1] $obj; } if($y) { transformLimits -ery 1 $oldRYEnable[1] -ry $rValue[1] $oldLimitRY[1] $obj; } if($z) { transformLimits -erz 1 $oldRZEnable[1] -rz $rValue[2] $oldLimitRZ[1] $obj; } } if($s) { if($x) { transformLimits -esx 1 $oldSXEnable[1] -sx $sValue[0] $oldLimitSX[1] $obj; } if($y) { transformLimits -esy 1 $oldSYEnable[1] -sy $sValue[1] $oldLimitSY[1] $obj; } if($z) { transformLimits -esz 1 $oldSZEnable[1] -sz $sValue[2] $oldLimitSZ[1] $obj; } } } } select $selected; } global proc dbRemoveLimitInfo() { string $selected[] = `ls -sl`; for($obj in $selected) { transformLimits -etx 0 0 $obj; transformLimits -ety 0 0 $obj; transformLimits -etz 0 0 $obj; transformLimits -erx 0 0 $obj; transformLimits -ery 0 0 $obj; transformLimits -erz 0 0 $obj; transformLimits -esx 0 0 $obj; transformLimits -esy 0 0 $obj; transformLimits -esz 0 0 $obj; } }