« 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の拡張子でテキストファイルに保存して また、他の項目でも書いた通り、
|
