いつかまともなサイトを作りたい物です・・・
今回もPhotoshopのスクリプトです
Photoshopで画像の差分制作を行います
エロではありません。
いや、むしろエロでつかったら俺にください!!!
・・・というわけで、差分のレイヤー表示を簡単に
するべく作ったスクリプトです
説明
命名法則により、表示、非表示を
一括で切り替えるスクリプトです
■Unhide
名前がマッチした場合、表示する
■Hide Group
名前がマッチした場合、非表示にする
※表示に入っている場合は無視されます
■その他
・その他のレイヤーの表示は変更しません
・レイヤーセットの名前が適合した場合、
それ以下のレイヤーの表示は変更しません
SwitchLayers
//SwitchLayers
// 05 28 2013
//Global
var LEFT = 20
var TOP = 20
var BUTTON_W = 100
var OFFSET_W = 125
var BUTTON_H = 25
var OFFSET_H = 40
//初期に設定されるグループネーム
var textChkGroupName = "p1,p2,p3,p4,p5,p6,p7,p8,p9";
var gUnHideObjectName = "homhom"
var gHideObjectNameGroup = ["hamham"]
//レイヤーに対するアクションA
function layerActionA( in_Layer ){
//alert( "ActionA Match " + in_Layer.name )
in_Layer.visible = true
}
//レイヤーに対するアクションB
function layerActionB( in_Layer ){
//alert( "ActionB GMatch " + in_Layer.name )
in_Layer.visible = false
}
//名前検索(グループ)
function chkNameGroup( trget_Name )
{
for ( var i = 0; i < gHideObjectNameGroup.length; i++)
{
if (trget_Name.match( gHideObjectNameGroup[i] ) ){
return true
}
}
return false
}
//名前検索
function chkName( trget_Name ){
//alert(gUnHideObjectName)
if ( trget_Name.match( gUnHideObjectName ) ){
return true
}
return false
}
//再帰関数
function getAllLayer(parent){
//alert(gUnHideObjectName)
var ChildLayers= parent.layers;
for (var i = 0; i < ChildLayers.length; i++){
if (ChildLayers[i].typename == "LayerSet"){
//レイヤーセットの場合の処理
//alert("LayerSet Name = " + ChildLayers[i].name)
if( chkName( ChildLayers[i].name ) ){
layerActionA( ChildLayers[i] )
continue;
}
else{
//該当する名前がグループのみにあった場合
if ( chkNameGroup( ChildLayers[i].name) ){
layerActionB( ChildLayers[i] )
continue;
}
}
//再帰処理
getAllLayer(ChildLayers[i]);
}else{
//通常のレイヤーの場合の処理
// alert("Layer Name = " + ChildLayers[i].name)
if( chkName( ChildLayers[i].name ) ){
layerActionA( ChildLayers[i] )
}else{
//該当する名前がグループのみにあった場合
if ( chkNameGroup( ChildLayers[i].name) ){
layerActionB( ChildLayers[i] )
}
}
}
}
}
function switchLayers(uDlg){
//alert("changeViewVis")
//ダイアログからグローバル変数の設定
gUnHideObjectName = uDlg.unhideName.text
gHideObjectNameGroup = uDlg.hideGroupName.text.split(",")
//alert(gUnHideObjectName)
//for ( var i = 0; i < gHideObjectNameGroup.length;i++)
// alert(gHideObjectNameGroup[i])
//実作業
var parent = activeDocument;//作業するドキュメントの参照
getAllLayer(parent);
refresh();
}
function main(){
app.bringToFront();
//ドキュメントが開かれているかどうか判別
if (app.documents.length ==0){
alert("No Docment")
return;
//ドキュメントが開かれていない場合処理なし
}
var uDlg = new Window('dialog','switchLayers');
uDlg.bounds = [200,300,580,420];
//uDlg.opacity = .9;
uDlg.sText = uDlg.add("statictext", [ 20, 10, 140, 10 + BUTTON_H], "UnHide (Unique)");
uDlg.unhideName = uDlg.add("edittext", [150, 10, 250, 10 + BUTTON_H], "p1");
uDlg.sText = uDlg.add("statictext", [ 20, 40, 140, 40 + BUTTON_H], "HideGroup(split(','))");
uDlg.hideGroupName = uDlg.add("edittext",[150, 40, 360, 40 + BUTTON_H], textChkGroupName);
uDlg.btnCancel = uDlg.add("button", [150, 70, 250, 70 + BUTTON_H], "Close");
uDlg.btn00 = uDlg.add("button", [270, 70, 360, 70 + BUTTON_H], "Apply");
uDlg.btnCancel.onClick = function () {
//alert("キャンセルされました。");
uDlg.close();
}
//ボタンを押されたときの設定
uDlg.btn00.onClick = function ()
{
//switchLayers(uDlg);
activeDocument.suspendHistory('switchLayers', 'switchLayers(uDlg)'); //margin(gap);
}
uDlg.show()
//alert("finish")
}
main()
展望
現在、表示レイヤーをtga保存する
ところまでいけました
次は一括出力です。
この手の作業はなるべく自動化しておきたい物ですヨ
0 件のコメント:
コメントを投稿