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