Illustratorで「選択しているオブジェクトを新規レイヤーに移動し、そのレイヤーを最背面に移動してロック」までを1ストロークで実行する
自分の場合、Illustratorでの制作物では基本的にレイヤー分けしません。
その理由は[オブジェクトを前面に/背面に移動する]コマンドがレイヤー内のみで有効なため。
その一方、ドキュメント全体に背景色を付けるようなケースでは、別レイヤーにしておかないと、背景色を付けたオブジェクトの下に回り込んでしまって不便です。
次の作業を1ストロークで実行する方法について考えてみました。
新規レイヤーを作成し、レイヤー名を「bg」に変更する
選択しているオブジェクトを「bg」レイヤーに移動する
「bg」レイヤーを最背面に移動し、ロックする
選択しているオブジェクトが元々あったレイヤーをアクティブに
アクション
手順1、手順2はアクションで実行できます。
「選択しているオブジェクトを「bg」レイヤーに移動する」には[オブジェクト]メニューの[重ね順] → [選択しているレイヤーに移動]を使います。
スクリプト
こんな感じで動きました。
「bg」レイヤーが存在する場合には、そのレイヤーのロックを解除、選択オブジェクトを移動、さらに、そのオブジェクトを最背面に移動
var doc = activeDocument;
var currentLayer = doc.activeLayer; // 現在のレイヤーを保存
// "bg" レイヤーが既に存在するか確認
var bgLayer;
try {
bgLayer = doc.layers.getByName("bg");
bgLayer.locked = false; // ロックを解除
} catch (e) {
bgLayer = doc.layers.add(); // 新しいレイヤーを作成
bgLayer.name = "bg"; // レイヤー名を「bg」に設定
}
var selectedObjects = doc.selection; // 選択されたオブジェクト
// 選択されたオブジェクトを「bg」レイヤーに移動
for (var i = selectedObjects.length - 1; i >= 0; i--) {
selectedObjects[i].move(bgLayer, ElementPlacement.PLACEATBEGINNING);
selectedObjects[i].zOrder(ZOrderMethod.SENDTOBACK); // オブジェクトを最背面に移動
}
bgLayer.zOrder(ZOrderMethod.SENDTOBACK); // 「bg」レイヤーを最背面に移動
bgLayer.locked = true; // 「bg」レイヤーをロック
doc.activeLayer = currentLayer; // 元のレイヤーをアクティブに戻す
次のブログ記事を参考にしました。
お礼
選択オブジェクトが複数あるとき、前後関係が狂ってしまうようで、ご指摘と修正案をいただきました。
あるふぁ(仮)さん、ものかのさん、あぢ(z-)そよ風邪さん、ありがとうございます!!!
ダウンロード
Keyboard Maestroのマクロです。MaestroPackが必要です。
2023年1月31日17:30に修正しました。
ここから先は
3字
/
2ファイル
月に10-20本くらいの記事を投稿しています。定期購読されると、更新のお知らせを受け取ったり、マガジン限定記事やサンプルファイルをダウンロードできます。
購読を開始した月に更新された記事から読むことができます(初月無料)。
DTP Transit 定期購読マガジン
¥100 / 月
初月無料
マガジン限定記事やサンプルファイルをダウンロードできます。
定期マガジンを購読されるとサンプルファイルをダウンロードいただけます。 https://note.com/dtp_tranist/m/mebd7eab21ea5