/**************************************** Daniel Loran 28-08-2006 Lab 2 *****************************************/ proc makeBoxFromObject( string $object, int $distanceBetweenObjects, // must be >= 2 int $numberOfObjectsAlongAxisX, // must be >= 2 int $numberOfObjectsAlongAxisY, // must be >= 2 int $numberOfObjectsAlongAxisZ // must be >= 2 ){ // open new scene file -f -new; string $supportedObjectDefault = "polyCube"; string $warningUnsupportedObject = "The object you have specified '" + $object + "' is not supported and will be replaced by " + $supportedObjectDefault + "."; string $supportedObjects[] = {"sphere", "polyCube", "polyCone"}; int $isObjectSupported = false; // check if distance and number of objects along each axis >= 2, if not set it to 2. if($distanceBetweenObjects < 2) $distanceBetweenObjects = 2; if($numberOfObjectsAlongAxisX < 2) $numberOfObjectsAlongAxisX = 2; if($numberOfObjectsAlongAxisY < 2) $numberOfObjectsAlongAxisY = 2; if($numberOfObjectsAlongAxisZ < 2) $numberOfObjectsAlongAxisZ = 2; // check if given object is supported for($sObject in $supportedObjects){ if($object == $sObject){ $isObjectSupported = true; break; } } //if object is not supported give a warning that it will be replaced by $supportedObjectDefault if(!$isObjectSupported){ warning $warningUnsupportedObject; $object = $supportedObjectDefault; $isObjectSupported = true; } // create a box from multiple instances of $object, // use $distanceBetweenObjects to set the distance // between objects that will form the box shape int $i, $j, $k, $x, $y, $z = 0; string $objectName = ""; for($k = 0; $k < $numberOfObjectsAlongAxisZ; $k++){ for($i = 0; $i < $numberOfObjectsAlongAxisY; $i++){ for($j = 0; $j < $numberOfObjectsAlongAxisX; $j++){ $objectName = "object" + $i + $j + $k; eval($object + " -name " + $objectName); $x = $x + $distanceBetweenObjects; eval("move -relative " + $x + " " + $y + " " + $z + " " + $objectName); } $x = 0; $y = $y + $distanceBetweenObjects; } $y = 0; $z = $z + $distanceBetweenObjects; } }