proc randRot(float $randAmt)
{
  if ($randAmt != 0) {
    float $r1 = rand($randAmt) - $randAmt/2;
    float $r2 = rand($randAmt) - $randAmt/2; 
    float $r3 = rand($randAmt) - $randAmt/2;
    rotate $r1 $r2 $r3;
  }
}

// Note, I should probably do some parent-child stuff here
proc makeMenger(float $size, float $tx, float $ty, float $tz, float $randAmt, int $n)
{
  
  if ($n == 0) {
    polyCube;
    //CreateSubdivCube;
    scale $size $size $size;
    move -localSpace $tx $ty $tz;
  } else {
    float $o = $size/3.0;
    makeMenger($size / 3, $tx-$o, $ty-$o, $tz-$o, $randAmt, $n-1); randRot($randAmt);
    makeMenger($size / 3, $tx-$o, $ty-$o, $tz+$o, $randAmt, $n-1); randRot($randAmt);
    makeMenger($size / 3, $tx-$o, $ty+$o, $tz-$o, $randAmt, $n-1); randRot($randAmt);
    makeMenger($size / 3, $tx-$o, $ty+$o, $tz+$o, $randAmt, $n-1); randRot($randAmt);
    makeMenger($size / 3, $tx+$o, $ty-$o, $tz-$o, $randAmt, $n-1); randRot($randAmt);
    makeMenger($size / 3, $tx+$o, $ty-$o, $tz+$o, $randAmt, $n-1); randRot($randAmt);
    makeMenger($size / 3, $tx+$o, $ty+$o, $tz-$o, $randAmt, $n-1); randRot($randAmt);
    makeMenger($size / 3, $tx+$o, $ty+$o, $tz+$o, $randAmt, $n-1); randRot($randAmt);

    makeMenger($size / 3, $tx   , $ty-$o, $tz-$o, $randAmt, $n-1); randRot($randAmt);
    makeMenger($size / 3, $tx   , $ty-$o, $tz+$o, $randAmt, $n-1); randRot($randAmt);
    makeMenger($size / 3, $tx   , $ty+$o, $tz-$o, $randAmt, $n-1); randRot($randAmt);
    makeMenger($size / 3, $tx   , $ty+$o, $tz+$o, $randAmt, $n-1); randRot($randAmt);

    makeMenger($size / 3, $tx-$o, $ty   , $tz-$o, $randAmt, $n-1); randRot($randAmt);
    makeMenger($size / 3, $tx-$o, $ty   , $tz+$o, $randAmt, $n-1); randRot($randAmt);
    makeMenger($size / 3, $tx+$o, $ty   , $tz-$o, $randAmt, $n-1); randRot($randAmt);
    makeMenger($size / 3, $tx+$o, $ty   , $tz+$o, $randAmt, $n-1); randRot($randAmt);

    makeMenger($size / 3, $tx-$o, $ty-$o, $tz   , $randAmt, $n-1); randRot($randAmt);
    makeMenger($size / 3, $tx-$o, $ty+$o, $tz   , $randAmt, $n-1); randRot($randAmt);
    makeMenger($size / 3, $tx+$o, $ty-$o, $tz   , $randAmt, $n-1); randRot($randAmt);
    makeMenger($size / 3, $tx+$o, $ty+$o, $tz   , $randAmt, $n-1); randRot($randAmt);
  }
}


makeMenger(1,0,0,0,10,2);
select -cl;