// Assigns a color to each face of a mesh.
// 1  Select the objects.
// 2  Execute this command, addFaceColorPrimVar("mycolor", <<0,0,0>>,<<1,1,1>>);
  
global proc addFaceColorPrimVar(string $shortname, vector $minval, vector $maxval) {
    string $sel[] = `ls -sl`;
    string $fullname = "rmanuC" + $shortname;
    for($current in $sel) {
        string $shapes[] = `listRelatives -s $current`;
        string $shape = $shapes[0];
        if(attributeExists($fullname, $shape) == 0) {
            addAttr -ln $fullname -sn $fullname -dt vectorArray -k 1 $shape;
            }
        int     $numFaces[] = `polyEvaluate -f $shape`;
        string     $dataStr = $numFaces[0] + " ";
        float    $r, $g, $b;
        for($n = 0; $n < $numFaces[0]; $n++) {
            vector $rgb = rand($minval, $maxval);
            float $r = $rgb.x;
            float $g = $rgb.y;
            float $b = $rgb.z;
            $dataStr = $dataStr + $r + " " + $g + " " + $b + " ";
            }
        eval("setAttr " + $shape + "." + $fullname + " -type vectorArray " + $dataStr);
        }
    }