-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapplyEffects.jsx
More file actions
46 lines (43 loc) · 1.11 KB
/
applyEffects.jsx
File metadata and controls
46 lines (43 loc) · 1.11 KB
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
// applyEffects.jsx
#include 'lib.jsx'
var doc = app.activeDocument;
var al = doc.activeLayer;
var effectLayers = [];
doc.suspendHistory('Apply Effects', 'exec()');
function freezeArray(arr) {
var fa = [];
for (var c = 0; c < arr.length; c++)
fa.push(arr[c]);
return fa;
}
function handleLayer(l) {
for (var c = 0; c < effectLayers.length; c++) {
var E = effectLayers[c];
if (!E.visible) continue;
var D = E.duplicate(l, ElementPlacement.PLACEBEFORE);
D.grouped = true;
D.merge();
}
}
function handleLayers(L) {
L = freezeArray(L);
for (var c = 0; c < L.length; c++) {
if (L[c].typename === 'LayerSet')
handleLayers(L[c].layers)
else if (L[c].typename == 'ArtLayer')
handleLayer(L[c]);
}
}
function exec() {
var L = freezeArray(doc.layers);
if (L[0].typename != 'LayerSet' || L[0].name != 'effects') {
alert('最初のフォルダはeffectsである必要があります');
return;
}
effectLayers = freezeArray(L[0].artLayers);
L.splice(0, 1);
handleLayers(L);
for (var c = 0; c < effectLayers.length; c++) {
effectLayers[c].visible = false;
}
}