« 2012年5月 | メイン | 2012年12月 »
●Photoshopのレイヤー表示状態を操作するスクリプトあれこれ |
2012年11月26日 |
以前の記事のスクリプトを使ってくださって人から #target photoshop //レイヤーセットを辿るための関数 function follw_LayerSets(parent){ var ChildLyaers= parent.layers; for (var i = 0; i < ChildLyaers.length; i++){ if (ChildLyaers[i].typename == "LayerSet"){ //レイヤーセットの場合の処理 //再帰処理 follw_LayerSets(ChildLyaers[i]); } ChildLyaers[i].visible= true } } app.bringToFront(); //ドキュメントが開かれているかどうか判別 if (app.documents.length ==0){ //ドキュメントが開かれていない場合処理なし }else{ var parent = activeDocument;//作業するドキュメントの参照 follw_LayerSets(parent); }前回のレイヤーセットの描画モードを変更するスクリプトの関数を作り直しただけですね これだけではつまらないので #target photoshop //レイヤーセットを辿るための関数 function follw_LayerSets(parent,active_layer){ var break_flag = 0; var ChildLyaers= parent.layers; for (var i = 0; i < ChildLyaers.length; i++){ if (ChildLyaers[i] == active_layer){ break_flag = 1; break; } if (ChildLyaers[i].typename == "LayerSet"){ //レイヤーセットの場合の処理 //回帰処理 break_flag = follw_LayerSets(ChildLyaers[i],active_layer); if (break_flag == 1 ){break;} } ChildLyaers[i].visible= false; } return(break_flag); } app.bringToFront(); //ドキュメントが開かれているかどうか判別 if (app.documents.length ==0){ //ドキュメントが開かれていない場合処理なし }else{ var parent = activeDocument;//作業するドキュメントの参照 var active_layer =activeDocument.activeLayer; follw_LayerSets(parent,active_layer); } と、このコードではレイヤーセット(グループ)の中にあるレイヤーも #target photoshop function hide_upperLayers(parent,level_list,active_layer){ var break_flag = 0; var ChildLyaers= parent.layers; for (var i = 0; i < ChildLyaers.length; i++){ if(ChildLyaers[i] == active_layer){ //選択レイヤーで処理を終了 break_flag = 1; break; }else if(ChildLyaers[i] == level_list[0]){ //選択レイヤーの親だった場合下の階層を辿る level_list.shift() parent = ChildLyaers[i] break_flag = hide_upperLayers(parent,level_list,active_layer) if (break_flag == 1 ){break;} }else{ ChildLyaers[i].visible= false } } return (break_flag) } //レイヤセットの親まで辿るための関数 function get_level(child,level_list){ var local_parent = child.parent; if (local_parent != activeDocument){ //再帰処理 level_list.unshift(local_parent); level_list = get_level(local_parent,level_list); } return(level_list) } app.bringToFront(); //ドキュメントが開かれているかどうか判別 if (app.documents.length ==0){ //ドキュメントが開かれていない場合処理なし }else{ var parent = activeDocument;//作業するドキュメントの参照 var active_layer = activeDocument.activeLayer //現在のレイヤのレイヤーセットの階層を取得 var level_list = new Array(); level_list = get_level(active_layer,level_list); //上にあるレイヤを非表示に hide_upperLayers(parent,level_list,active_layer) } 使う人が居るかどうか分からないけれどアーカーイブ
いつもの繰り返しになりますが
|
●新着記事がある場合にここに表示するようにしてあります |
2012年11月15日 |
記事なし
|
●レイヤーセットの描画モードを一括変換 |
2012年11月 5日 |
SaiやClip Studio Paint でPSDを書き出すと //#target photoshop //レイヤーセットを辿るための関数 function follw_LayerSets(parent){ var ChildLyaers= parent.layers; for (var i = 0; i < ChildLyaers.length; i++){ if (ChildLyaers[i].typename == "LayerSet"){ //レイヤーセットの場合の処理 set_PassThrough(ChildLyaers[i]); //再帰処理 //arguments.callee(ChildLyaers[i]) follw_LayerSets(ChildLyaers[i]); }else{ //レイヤーセット以外に処理をしたい場合はここに記述 } } } //描画モードが通常のレイヤーセットを通過に設定 function set_PassThrough(targetLayer){ if (targetLayer.typename == "LayerSet"){ if (targetLayer.allLocked == false){ if (targetLayer.blendMode == BlendMode.NORMAL){ targetLayer.blendMode = BlendMode.PASSTHROUGH; } } } } //main // in case we double clicked the file app.bringToFront(); //ドキュメントが開かれているかどうか判別 if (app.documents.length ==0){ //ドキュメントが開かれていない場合処理なし }else{ var parent = activeDocument;//作業するドキュメントの参照 follw_LayerSets(parent); } 通常モード以外のレイヤーセット(グループ)は影響を受けません .jsまたは.jsxの拡張子でテキストファイルに保存して また、他の項目でも書いた通り、
|