LoginSignup
0
0

More than 5 years have passed since last update.

Photoshop | 表示状態のレイヤー数を求める

Posted at

スクリプトでは、レイヤーを「ArtLayer」
グループを「LayerSet」と呼んでいる。

photoshop1.png

このレイヤーの名前を表示してみる。

レイヤー名を表示する

#target photoshop

var doc = app.activeDocument;
for (var i = 0; i < doc.artLayers.length; i++) {
    $.writeln(doc.artLayers[i]);
}

// [ArtLayer 背景]
// と表示される

グループ名を表示する

#target photoshop

var doc = app.activeDocument;
for (var i = 0; i < doc.layerSets.length; i++) {
    $.writeln(doc.layerSets[i]);
}

// [LayerSet グループ 1]
// [LayerSet グループ 3]
// と表示される

レイヤー名とグループ名を表示する

#target photoshop

var doc = app.activeDocument;
for (var i = 0; i < doc.layers.length; i++) {
    $.writeln(doc.layers[i]);
}

// [LayerSet グループ 1]
// [LayerSet グループ 3]
// [ArtLayer 背景]
// と表示される

すべてのレイヤー数を求める

今までは一番上の階層のみを対象にしていたが、
すべてのレイヤー数を求めるには、
各グループ内のレイヤー数を加算する必要がある。

#target photoshop

function getArtLayerCount(doc) {
    var count = doc.artLayers.length;
    for (var i = 0; i < doc.layerSets.length; i++) {
        count += getArtLayerCount(doc.layerSets[i]);
    }
    return count;
}

var count = getArtLayerCount(doc);
$.writeln(count);

// 4
// と表示される

表示状態のレイヤー数を求める

#target photoshop

var doc = app.activeDocument;

function getVisibleArtLayerCount(doc) {
    var count = 0;
    for (var i = 0; i < doc.artLayers.length; i++) {
        if (doc.artLayers[i].visible) {
            count++;
        }
    }
    for (var i = 0; i < doc.layerSets.length; i++) {
        if (doc.layerSets[i].visible) {
            count += getVisibleArtLayerCount(doc.layerSets[i]);
        }
    }
    return count;
}

var count = getVisibleArtLayerCount(doc);
$.writeln(count);

// 0
// と表示される
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0