レイヤー作成
新規レイヤーを作成
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);
}