ごんれのラボ

iOS、Android、Adobe系ソフトの自動化スクリプトのことを書き連ねています。

フレームの周りにガイドを引く

4年前に書いた記事を更新してみる。

元記事はInDesignでJavaScript その8。

4年前の自分よ、これだと検索性が悪いってことに気づけ!(怒)

<仕様>

●最前面のドキュメントで選択されているフレームの枠に沿ってガイドを引くJavaScript

●上、下、左、右、四辺と選べて、デフォルトは四辺に引く設定

●同一スプレッド内ならページをまたいだフレームにもガイドが引ける

デモ動画はこちら↓(フルスクリーン推奨)

//変数に代入

var docObj = app.activeDocument;

//activePage、activeSpreadはactiveWindowのプロパティ

var mySpred = app.activeWindow.activeSpread ; //activePage

//フレームを1つだけ選択していたら

if (app.selection.length == 1) {

//ドキュメントのrulerOriginを保存

var oldRular = docObj.viewPreferences.rulerOrigin ;

//ドキュメントのrulerOriginをページに変更(10進法で指定)

docObj.viewPreferences.rulerOrigin = 1380143983 ;

var sel = docObj.selection[0];

//座標値を変数に代入

var y1 = sel.visibleBounds[0];

var x1 = sel.visibleBounds[1];

var y2 = sel.visibleBounds[2];

var x2 = sel.visibleBounds[3];

// ダイアログの土台の生成とタイトル名の付与

var myDialog = app.dialogs.add({name:"ガイド作成設定"});

// 生成したダイアログの中身を構築

with(myDialog.dialogColumns.add()) {

with(dialogRows.add()) {

with(dialogColumns.add()) {

//ガイドを引く場所をラジオボタンで設定するためにラジオボタンを作成

var MyguideGroups = radiobuttonGroups.add();

with (MyguideGroups) {

//ガイドを引く場所をラジオボタンで設定する

var Topselect= radiobuttonControls.add({staticLabel:"上辺"});

var Bottomselect = radiobuttonControls.add({staticLabel:"下辺"});

var Leftselect = radiobuttonControls.add({staticLabel:"左辺"});

var Rightselect = radiobuttonControls.add({staticLabel:"右辺"});

var ALLselect = radiobuttonControls.add({staticLabel:"四辺",checkedState:true});

}

}

}

}

//ダイアログを表示

if (myDialog.show() == true) {

switch(MyguideGroups.selectedButton) {

//選択したボタンにあわせてキーワードを代入

//switchは「●●の場合△△する」という使い方ができる

case 0 : var GuideAline = "Topguide"; break ;

case 1 : var GuideAline = "Buttomguide"; break ;

case 2 : var GuideAline = "Leftguide"; break ;

case 3 : var GuideAline = "Rightguide"; break ;

case 4 : var GuideAline = "Allguide"; break ;

default : break ;

}

with(mySpred){ //

switch(GuideAline) {

case "Topguide" :

//ボックスの座標値を基にガイドを引く

guides.add(undefined,{orientation:HorizontalOrVertical.horizontal,location:(y1)});

break ;

case "Buttomguide" :

guides.add(undefined,{orientation:HorizontalOrVertical.horizontal,location:(y2)});

break ;

case "Leftguide" :

guides.add(GuideAline,{orientation:HorizontalOrVertical.vertical,location:(x1)});

break ;

case "Rightguide" :

guides.add(undefined,{orientation:HorizontalOrVertical.vertical,location:(x2)});

break ;

case "Allguide" :

guides.add(undefined,{orientation:HorizontalOrVertical.horizontal,location:(y1)});

guides.add(undefined,{orientation:HorizontalOrVertical.horizontal,location:(y2)});

guides.add(undefined,{orientation:HorizontalOrVertical.vertical,location:(x1)});

guides.add(undefined,{orientation:HorizontalOrVertical.vertical,location:(x2)});

break ;

default : break ;

}

}

}

myDialog.destroy();

//ドキュメントのrulerOriginをもとに戻す

docObj.viewPreferences.rulerOrigin = oldRular ;

} else { //選択していない、または2つ以上選択している場合

alert("フレームを1つだけ選択してから実行してください。")

}