レイヤー: Illustrator × JavaScript

レイヤー作成

新規レイヤーを作成

var mylayer = activeDocument.layers.add();

レイヤー名
指定しない場合は国ごとに新規レイヤーの名前が異なる。

mylayer.name = "新しいレイヤー";

レイヤーカラー(RGB)

var color = new RGBColor();
color.red = 255;
color.green = 128;
color.blue = 0;
// レイヤーカラーとして設定する
mylayer.color = color;

レイヤー名を指定する
レイヤー名、大文字と小文字は区別されない。
レイヤー名がない場合はエラーで停止するのでtyy〜catch()で回避する。

try{
var mylayer = activeDocument.layers["ハシビロコウレイヤー"];
//「ハシビロコウレイヤー」が存在した時の処理をここに書く
}catch(e){
//「ハシビロコウレイヤー」が存在しなかった時の処理
}

オブジェクトをレイヤに移動する

obj.move(layer,ElementPlacement.PLACEATBEGINNING);

最前面のレイヤー

var layObjTop = activeDocument.layers[0];

最背面のレイヤー

var layObjBottom = activeDocument.layers[activeDocument.layers.length-1];

レイヤー総数(サブレイヤーは含まない)

var num=activeDocument.layers.length;

最前面レイヤーのサブレイヤーの総数

var subnum = activeDocument.layers[0].layers.length;

レイヤーをロックする

mylayer.locked=true;

レイヤーをロック解除する

mylayer.locked=false;

アクティブなレイヤーを取得

var mylayer = app.activeDocument.activeLayer;

使用例

その名前のレイヤーがなければ作成する

//レイヤー名
var lname = "ハシビロコウレイヤー";
//なければレイヤー作成
var doc = activeDocument;
try {
var mylayer =doc.layers[lname];
} catch(e) {
var mylayer = doc.layers.add();
 mylayer.name = lname;
}

サブレイヤーも処理???

var ray=app.activeDocument.layers;
layerLoop(ray);

//サブレイヤーの中もアクセス
function layerLoop(lay){
    for(var l=0;l<lay.length;l++){
        if(lay[l].layers.length > 0){
                //サブレイヤー再帰処理
                layerLoop(lay[l].layers);}
                //ここに処理
//groopLoop(lay[l].pageItems);
}
}

サブレイヤー・グループ再帰

layerLoop(app.activeDocument.layers);
//サブレイヤーの中もアクセス
function layerLoop(lay){ 
    for(var l=0;l<lay.length;l++){ 
    //サブレイヤー再帰処理 
        if(lay[l].layers.length > 0){
            layerLoop(lay[l].layers);
        } 
        groupLoop(lay[l].pageItems); 
    }
} 
//グループの中もアクセス メイン処理 
function groupLoop(objs){ 
    for(var i=0;i<objs.length;i++){         if(objs[i].typename=="GroupItem"){        groupLoop(objs[i].pageItems); 
}else{ 
//ここに処理をかく
objs[i].selected=true; 
} 
}
 return; 
}

選択オブジェクトをレイヤに移動する

var sel=app.activeDocument.selection;
var lname = "該当オブジェクト";
//なければレイヤー作成
try {
var mylayer =activeDocument.layers[lname];
} catch(e) {
var mylayer = activeDocument.layers.add();
mylayer.name = lname;
}
for(i=0; i < sel.length; i++){
sel[i].move(mylayer,ElementPlacement.PLACEATBEGINNING);
}
タイトルとURLをコピーしました