ロック:JavaScript×Illustrator

ロック関連。

オブジェクトのロック

ロックする

オブジェクトをロックする

obj.locked=true;>

メニューから「ロック」(CS6以降)


app.executeMenuCommand("lock");

メニューから「ロック>前面のすべてのアートワーク」(CS6以降)

app.executeMenuCommand("Selection Hat 5");

メニューから「ロック>その他のレイヤー」(CS6以降)

app.executeMenuCommand("Selection Hat 7");

ロック解除する

オブジェクトをロック解除する

obj.locked=false;

メニューから「すべてをロック解除」(CS6以降)
レイヤーにロックがかかっている場合は解除しないでスルーされます

app.executeMenuCommand("unlockAll");

すべてのオブジェクトのロックを解除する
→グループの中もみていかないといけないのでかなり面倒。メニューを実行する方が楽。どちらの場合もレイヤーロックは先に解除しとく必要があります。

レイヤーのロック

ロックする

レイヤーをロックする

obj.layer.locked = true;

一番上のレイヤーをロックする
activeDocument.layers[0].locked = true;

ロック解除する

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

obj.layer.locked = false;

例文

レイヤーのロックをすべて解除する(サブレイヤーも)

layerUnlock(activeDocument); 

// レイヤーロック解除
function layerUnlock(lay){
  for(var i=0; i<lay.layers.length; i++){
    lay.layers[i].locked = false; // レイヤーロックを解除
    if (lay.layers.length > 0){
      layerUnlock(lay.layers[i]); 
       // 再帰で入れ子になっているサブレイヤーを処理
    }
  }
}

レイヤーもオブジェクトもすべてのロックをはずす

groupLoop(app.activeDocument.pageItems);

//グループの中身にアクセス
function groupLoop(objs){
       for(var i=0;i<objs.length;i++){
            if(objs.typename=="GroupItem"){
      groupLoop(objs[i].pageItems);
    }else{
                    objs[i].locked=false;
                    objs[i].layer.locked = false;
    }
  }
return;
}

↑これだと、オブジェクトのないレイヤーのロックは解除できなかったので、

タイトルとURLをコピーしました