randomizer
Wed Sep 25 2024 02:39:56 GMT+0000 (Coordinated Universal Time)
Saved by @enite
global proc JPL_randomSelec (float $perc)
{
string $allObj [] = `ls -l -sl`;
//important to declare this array as an empty array if you try this script in the scriptEditor:
//as everything is declared as global, you would have always the same selection
string $randomSelec [] = {};
float $objectsToSelectNbFloat = (($perc/100) * `size $allObj`);
int $objectsToSelectNb = $objectsToSelectNbFloat;
if (size ($allObj))//very important to avoid infinite loop
{
while (size ($randomSelec) < $objectsToSelectNb)
{
int $random = `rand (size ($allObj))`;
if (!stringArrayContains ($allObj [$random], $randomSelec))
$randomSelec [size ($randomSelec)] = $allObj [$random];
}
select -r $randomSelec;
}
}
//JPL_randomSelec (50);
global proc selectPercent(int $percent)
{
intSliderGrp -e -v $percent daValue;
KernFade();
global string $KernSelectKeep[];
// string $getSel = `textField -q -tx KernSelectKeepField`;
string $sel[];
if(size($KernSelectKeep)==0)
{
$sel = `ls -sl -l`;
} else {
$sel = $KernSelectKeep;
}
string $newSel[] = $sel;
int $numberOfItemsSelected = size($sel);
int $numberOfItemsToSelect = ($numberOfItemsSelected * $percent * 0.01);
int $i = 0;
string $items[];
select -r $sel;
for ($i=0;$i<($numberOfItemsSelected - $numberOfItemsToSelect);$i++)
{
$remaining = size($newSel);
int $rand = rand(0,$remaining);
$items[$i] = $newSel[$rand];
stringArrayRemoveAtIndex($rand, $newSel);
}
$newSel = stringArrayRemove($items, $newSel);
select -r $newSel;
print ("original => " + size($sel) + " objects selected, result => " + size($newSel) + " objects selected, value => " + $percent + "%");
}
global proc KernFade()
{
$value = `intSliderGrp -q -v daValue`;
text -e -l ("Percent : "+$value+"%") daMsg;
float $red = (0.1625 + ($value*0.00375));
float $green = (0.5 - ($value*0.00375));
if ($red>0.5) $red=0.5;
if ($red<0.2) $red=0.2;
if ($green>0.5) $green=0.5;
if ($green<0.2) $green=0.2;
window -e -bgc $red $green 0.2 KernSelectUI;
iconTextButton -style "textOnly" -e -bgc $green $red 0.2 KernSelectAction;
iconTextButton -style "textOnly" -e -bgc $green $red 0.2 KernSelectForgetBtn;
iconTextButton -style "textOnly" -e -bgc $red $green 0.2 KernSelectKeepBtn;
}
global proc KernSelectClear()
{
global string $KernSelectKeep[];
clear $KernSelectKeep;
}
global proc KernSelectUI()
{
if (`window -ex KernSelectUI`) deleteUI KernSelectUI;
window -title "KernSelectUI ToolBox" -bgc 0.2 0.5 0.2 -rtf 1 KernSelectUI;
columnLayout -adjustableColumn true daSelectColumn;
flowLayout -columnSpacing 0;
iconTextButton -style "textOnly" -w 30 -l "10%" -bgc 0.2 0.4625 0.2 -c "selectPercent(10);";
iconTextButton -style "textOnly" -w 30 -l "20%" -bgc 0.2375 0.425 0.2 -c "selectPercent(20);";
iconTextButton -style "textOnly" -w 30 -l "30%" -bgc 0.275 0.3875 0.2 -c "selectPercent(30);";
iconTextButton -style "textOnly" -w 30 -l "40%" -bgc 0.3125 0.35 0.2 -c "selectPercent(40);";
iconTextButton -style "textOnly" -w 30 -l "50%" -bgc 0.35 0.3125 0.2 -c "selectPercent(50);";
iconTextButton -style "textOnly" -w 30 -l "60%" -bgc 0.3875 0.275 0.2 -c "selectPercent(60);";
iconTextButton -style "textOnly" -w 30 -l "70%" -bgc 0.425 0.2375 0.2 -c "selectPercent(70);";
iconTextButton -style "textOnly" -w 30 -l "80%" -bgc 0.4625 0.2 0.2 -c "selectPercent(80);";
iconTextButton -style "textOnly" -w 30 -l "90%" -bgc 0.5 0.2 0.2 -c "selectPercent(90);";
setParent ..;
columnLayout -adjustableColumn true daAttrColumn;
text -l "Percent : 10%" daMsg;
intSliderGrp -field false
-minValue 0 -maxValue 100
-fieldMinValue 0 -fieldMaxValue 100
-dc "KernFade()"
-cc "KernFade()"
-h 24
-value 10 daValue;
rowLayout -numberOfColumns 2 -adj 2;
columnLayout -adjustableColumn true;
iconTextButton -style "textOnly" -l "keep selection" -w 100 -vis 1 -bgc 0.2 0.5 0.2 -c "global string $KernSelectKeep[]; $KernSelectKeep = `ls -sl -l`;iconTextButton -e -vis 0 KernSelectKeepBtn;iconTextButton -e -vis 1 KernSelectForgetBtn;" KernSelectKeepBtn;
iconTextButton -style "textOnly" -l "forget selection" -w 100 -vis 0 -bgc 0.5 0.2 0.2 -c "clear $KernSelectKeep; iconTextButton -e -vis 0 KernSelectForgetBtn;iconTextButton -e -vis 1 KernSelectKeepBtn;" KernSelectForgetBtn;
setParent ..;
iconTextButton -style "textOnly" -l "Select" -bgc 0.5 0.2 0.2 -c "$value = `intSliderGrp -q -v daValue`; selectPercent($value);" KernSelectAction;
setParent ..;
setParent ..;
rowLayout -numberOfColumns 2 -adj 1;
iconTextButton -style "textOnly" -l "close" -h 15 -c "deleteUI KernSelectUI";
iconTextButton -style "textOnly" -l "refresh" -h 15 -w 150 -c "source KernSelect.mel; KernSelectUI();";
setParent ..;
setParent daSelectColumn;
showWindow KernSelectUI;
window -e -w 271 -h 107 KernSelectUI;
scriptJob -uid KernSelectUI KernSelectClear;
KernFade();
}
KernSelectUI();



Comments