レイヤ並び替え - [[PS_Script]]
目次
Photoshopレイヤの並び替え
きっと誰かがすでに書いているだろうと思ったが、なんだか見当たらなかったので自分で書いてみたですよ。PhotoshopCS版です。まだCS2では動作確認してません。
アクティブなファイルのアクティブなレイヤと同階層のレイヤをレイヤ名で逆順に並び替えます。
逆順…アニメのセルを下から順に並べるためなので「逆順デフォルト」
正順の並び替えが必要な方は、末尾の関数コールの引数を"true"とか"1" とかに変更してください。
Photoshopで、レイヤを並び替えするときに使います。
レイヤの並び替えをしたいファイルを開いて、スクリプトを呼びます。
レイヤの数が1以下の場合は当然ですが何もしません。
名前で並び替えですが、同名のレイヤが2つ以上あった場合警告のみ行って、一つ目のレイヤだけが操作対象になります。
2個目以降のレイヤは放置されて並び替えたレイヤの下側に残ります。 必要ならば手作業で配置してください。
「背景レイヤ」は無視します。背景レイヤも並び替えの仲間に入れる場合は、ダブルクリック等で通常レイヤにしといてください。
レイヤセットの中身は並び替えしません。(レイヤセット自体は名前順に並び替えます)
レイヤセットの中身のレイヤを並び替えたい場合は、レイヤセットの中のレイヤをどれか選択した状態でスクリプトを実行してください。この場合はレイヤセットの外側には手をつけません。
ソース
/* 汎用レイヤソート関数 アクティブレイヤの含まれるレイヤコレクションをレイヤ名でソートする。 引数にfalseを与えると、逆順ソート(アニメのセルなら逆順が望ましい) 同名のレイヤがある場合は、警告を出して処理は続行 */ layerSort= function(revFlag){ if(! revFlag) revFlag=false;// // アクティブレイヤのトレーラーをターゲットにセットする var myTarget=activeDocument.activeLayer.parent.layers; // 並び替え対称のレイヤが1つしかない場合は、並び替え不能なのでキャンセル if(myTarget.length<=1){return false;} // ソート用配列を作る var sortOrder=new Array(); for (idx=0;idx<myTarget.length;idx++){ if (myTarget[idx].isBackgroundLayer){ continue;//レイヤが背景だったら無視 }else{ sortOrder.push(myTarget[idx].name); } } sortOrder.sort();//逆順並び替え if (revFlag){ sortOrder.reverse();//正順並び替え } //並び替えた配列から同名レイヤのチェック for (idx=1;idx<sortOrder.length;idx++){ if(sortOrder[idx-1]==sortOrder[idx]){ alert("同名のレイヤがあります。?n二つ目以降のレイヤは並び替えの対象になりません。"); break; } } for (idx=0;idx<sortOrder.length;idx++){ myTarget.getByName(sortOrder[idx]).move(myTarget[0],ElementPlacement.PLACEBEFORE); } return sortOrder; } //逆順でコール layerSort(false);
Powered by YukiWiki 2.1.2a / Modified by Nekomataya.