-
Notifications
You must be signed in to change notification settings - Fork 23
/
Copy pathRandomize Shape Group Order.jsx
63 lines (50 loc) · 1.43 KB
/
Randomize Shape Group Order.jsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/**
* Randomly sort the selected shape groups in a shape layer
*
* @author Zack Lovatt <[email protected]>
* @version 0.2.1
*/
(function randomizeShapeGroupOrder() {
var comp = app.project.activeItem;
if (!(comp && comp instanceof CompItem)) {
alert('Open a comp!');
return;
}
var layers = comp.selectedLayers;
if (layers.length === 0) {
alert('Select a shape layer!');
return;
}
var ii;
app.beginUndoGroup('Randomize Shape Group Order');
for (ii = 0; ii < layers.length; ii++) {
var layer = layers[ii];
if (!(layer instanceof ShapeLayer)) {
alert('Select a shape layer!');
continue;
}
var vecGroup = layer.selectedProperties;
var numGroups = vecGroup.length;
var myIndexArray = [];
for (ii = 0; ii < numGroups; ii++) {
myIndexArray[ii] = vecGroup[ii].propertyIndex;
}
var idx;
var temp;
for (ii = 0; ii < numGroups; ii++) {
idx = ii + Math.floor(Math.random() * (myIndexArray.length - ii));
temp = myIndexArray[ii];
myIndexArray[ii] = myIndexArray[idx];
myIndexArray[idx] = temp;
}
var shapeArrayByName = [];
for (ii = 0; ii < numGroups; ii++) {
shapeArrayByName.push(vecGroup[ii].name);
}
for (ii = 0; ii < numGroups; ii++) {
var theseProps = layer.property('ADBE Root Vectors Group');
theseProps.property(shapeArrayByName[ii]).moveTo(myIndexArray[ii]);
}
}
app.endUndoGroup();
})();