/* NAME: dbCreateNurbsBox.mel VERSION: 1.0 CATEGORY: Modeling FUNCTION: This is a simple script to create a NURBS cube. USAGE: 1. Copy the dbCreateNurbsBox.mel into your Maya Scripts directory (Usually found in "My Documents\maya\\scripts\"). 2. In the Maya Script Editor, type in "source dbCreateNurbsBox.mel; dbCreateNurbsBox(, <0|1>);" 3. Change to the size of the box you want and change <0|1> to 1 in order to create a control to change the size of the box, otherwise put in 0. AUTHOR: David Bokser E-MAIL: me@davidbokser.com WEBSITE: www.davidbokser.com */ global proc string dbCreateNurbsBox(float $size, int $sizeCtrl){ $size = $size/2; string $nurbsBox = `curve -d 1 -p ($size * -1) $size ($size * -1) //0 -p ($size * -1) ($size * -1) ($size * -1) //1 -p ($size * -1) ($size * -1) $size //2 -p ($size * -1) $size $size //3 -p ($size * -1) $size ($size * -1) //4 -p $size $size ($size * -1) //5 -p $size $size $size //6 -p $size ($size * -1) $size //7 -p $size ($size * -1) ($size * -1) //8 -p $size $size ($size * -1) //9 -p ($size * -1) $size ($size * -1) //10 -p ($size * -1) ($size * -1) ($size * -1) //11 -p $size ($size * -1) ($size * -1) //12 -p $size ($size * -1) $size //13 -p $size $size $size //14 -p ($size * -1) $size $size //15 -p ($size * -1) ($size * -1) $size //16 -p $size ($size * -1) $size //17 -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 -k 11 -k 12 -k 13 -k 14 -k 15 -k 16 -k 17` ; $nurbsBox = `rename $nurbsBox nurbsBox1`; if($sizeCtrl) { string $shape[] = `listRelatives -shapes $nurbsBox`; addAttr -ln size -at double $shape[0]; setAttr -e -keyable true ($shape[0] + ".size"); setAttr ($shape[0] + ".size") ($size * 2); string $halfNode = `shadingNode -asUtility multiplyDivide`; setAttr ($halfNode + ".input2X") 0.5; string $negativeNode = `shadingNode -asUtility multiplyDivide`; setAttr ($negativeNode + ".input2X") -1; connectAttr -f ($shape[0] + ".size") ($halfNode + ".input1X"); connectAttr -f ($halfNode + ".outputX") ($negativeNode + ".input1X"); // CONNECTING THE SIZE ATTRIBUTE TO THE POINT POSITIONS connectAttr -f ($negativeNode + ".outputX") ($shape[0] + ".controlPoints[0].xValue"); connectAttr -f ($halfNode + ".outputX") ($shape[0] + ".controlPoints[0].yValue"); connectAttr -f ($negativeNode + ".outputX") ($shape[0] + ".controlPoints[0].zValue"); connectAttr -f ($negativeNode + ".outputX") ($shape[0] + ".controlPoints[1].xValue"); connectAttr -f ($negativeNode + ".outputX") ($shape[0] + ".controlPoints[1].yValue"); connectAttr -f ($negativeNode + ".outputX") ($shape[0] + ".controlPoints[1].zValue"); connectAttr -f ($negativeNode + ".outputX") ($shape[0] + ".controlPoints[2].xValue"); connectAttr -f ($negativeNode + ".outputX") ($shape[0] + ".controlPoints[2].yValue"); connectAttr -f ($halfNode + ".outputX") ($shape[0] + ".controlPoints[2].zValue"); connectAttr -f ($negativeNode + ".outputX") ($shape[0] + ".controlPoints[3].xValue"); connectAttr -f ($halfNode + ".outputX") ($shape[0] + ".controlPoints[3].yValue"); connectAttr -f ($halfNode + ".outputX") ($shape[0] + ".controlPoints[3].zValue"); connectAttr -f ($negativeNode + ".outputX") ($shape[0] + ".controlPoints[4].xValue"); connectAttr -f ($halfNode + ".outputX") ($shape[0] + ".controlPoints[4].yValue"); connectAttr -f ($negativeNode + ".outputX") ($shape[0] + ".controlPoints[4].zValue"); connectAttr -f ($halfNode + ".outputX") ($shape[0] + ".controlPoints[5].xValue"); connectAttr -f ($halfNode + ".outputX") ($shape[0] + ".controlPoints[5].yValue"); connectAttr -f ($negativeNode + ".outputX") ($shape[0] + ".controlPoints[5].zValue"); connectAttr -f ($halfNode + ".outputX") ($shape[0] + ".controlPoints[6].xValue"); connectAttr -f ($halfNode + ".outputX") ($shape[0] + ".controlPoints[6].yValue"); connectAttr -f ($halfNode + ".outputX") ($shape[0] + ".controlPoints[6].zValue"); connectAttr -f ($halfNode + ".outputX") ($shape[0] + ".controlPoints[7].xValue"); connectAttr -f ($negativeNode + ".outputX") ($shape[0] + ".controlPoints[7].yValue"); connectAttr -f ($halfNode + ".outputX") ($shape[0] + ".controlPoints[7].zValue"); connectAttr -f ($halfNode + ".outputX") ($shape[0] + ".controlPoints[8].xValue"); connectAttr -f ($negativeNode + ".outputX") ($shape[0] + ".controlPoints[8].yValue"); connectAttr -f ($negativeNode + ".outputX") ($shape[0] + ".controlPoints[8].zValue"); connectAttr -f ($halfNode + ".outputX") ($shape[0] + ".controlPoints[9].xValue"); connectAttr -f ($halfNode + ".outputX") ($shape[0] + ".controlPoints[9].yValue"); connectAttr -f ($negativeNode + ".outputX") ($shape[0] + ".controlPoints[9].zValue"); connectAttr -f ($negativeNode + ".outputX") ($shape[0] + ".controlPoints[10].xValue"); connectAttr -f ($halfNode + ".outputX") ($shape[0] + ".controlPoints[10].yValue"); connectAttr -f ($negativeNode + ".outputX") ($shape[0] + ".controlPoints[10].zValue"); connectAttr -f ($negativeNode + ".outputX") ($shape[0] + ".controlPoints[11].xValue"); connectAttr -f ($negativeNode + ".outputX") ($shape[0] + ".controlPoints[11].yValue"); connectAttr -f ($negativeNode + ".outputX") ($shape[0] + ".controlPoints[11].zValue"); connectAttr -f ($halfNode + ".outputX") ($shape[0] + ".controlPoints[12].xValue"); connectAttr -f ($negativeNode + ".outputX") ($shape[0] + ".controlPoints[12].yValue"); connectAttr -f ($negativeNode + ".outputX") ($shape[0] + ".controlPoints[12].zValue"); connectAttr -f ($halfNode + ".outputX") ($shape[0] + ".controlPoints[13].xValue"); connectAttr -f ($negativeNode + ".outputX") ($shape[0] + ".controlPoints[13].yValue"); connectAttr -f ($halfNode + ".outputX") ($shape[0] + ".controlPoints[13].zValue"); connectAttr -f ($halfNode + ".outputX") ($shape[0] + ".controlPoints[14].xValue"); connectAttr -f ($halfNode + ".outputX") ($shape[0] + ".controlPoints[14].yValue"); connectAttr -f ($halfNode + ".outputX") ($shape[0] + ".controlPoints[14].zValue"); connectAttr -f ($negativeNode + ".outputX") ($shape[0] + ".controlPoints[15].xValue"); connectAttr -f ($halfNode + ".outputX") ($shape[0] + ".controlPoints[15].yValue"); connectAttr -f ($halfNode + ".outputX") ($shape[0] + ".controlPoints[15].zValue"); connectAttr -f ($negativeNode + ".outputX") ($shape[0] + ".controlPoints[16].xValue"); connectAttr -f ($negativeNode + ".outputX") ($shape[0] + ".controlPoints[16].yValue"); connectAttr -f ($halfNode + ".outputX") ($shape[0] + ".controlPoints[16].zValue"); connectAttr -f ($halfNode + ".outputX") ($shape[0] + ".controlPoints[17].xValue"); connectAttr -f ($negativeNode + ".outputX") ($shape[0] + ".controlPoints[17].yValue"); connectAttr -f ($halfNode + ".outputX") ($shape[0] + ".controlPoints[17].zValue"); } return $nurbsBox; }