選択オブジェクトに合わせてアートボードを変更するillustratorのスクリプト
illustratorを使っていると、「アートボードを選択したオブジェクトサイズに合わせたい」ときがあります。
これだけなら[オブジェクト]→[アートボード]→[選択オブジェクトに合わせる]で済むのですが、「オブジェクトサイズに合わせるときに、指定ピクセルだけ余白をあけたい」ときもあります。
また、オブジェクト全体に合わせてアートボードサイズを変えたいときもあります。
というわけでスクリプトの出番です。
やりたかったこと
やりたかったことを改めてまとめると下記のようになります。
- オブジェクトを選択していたら選択オブジェクトにアートボードサイズを合わせる
- オブジェクトを選択していなかったらオブジェクト全体にアートボードサイズを合わせる
- スクリプトを実行するとダイアログボックスが出てきて、上下の余白と左右の余白のピクセルを指定できる
- 0pxにすると、オブジェクトとアートボードがピッタリ合う
完成したコード
完成したコードは下記になります。
(function () {
var box = new Window('dialog', "周りの余白指定(px)");
box.panel = box.add('panel', undefined, '');
box.panel.group1 = box.panel.add('group', undefined);
box.panel.group1.orientation = 'row';
box.panel_text1 = box.panel.group1.add('statictext', undefined, '左右の余白 :');
box.panel_input1 = box.panel.group1.add('edittext', [0, 0, 40, 22], '0');
box.panel_input1.active = true;
box.panel.group2 = box.panel.add('group', undefined);
box.panel.group2.orientation = 'row';
box.panel_text2 = box.panel.group2.add('statictext', undefined, '上下の余白 :');
box.panel_input2 = box.panel.group2.add('edittext', [0, 0, 40, 22], '0');
box.group = box.add('group', undefined);
box.group.orientation = 'row';
box.group.closeBtn = box.group.add('button', undefined, 'キャンセル', { name: 'cancel' });
box.group.actionBtn = box.group.add('button', undefined, 'OK', { name: 'action' });
box.group.closeBtn.onClick = function () {
box.close();
}
box.group.actionBtn.onClick = function () {
changeArtboard([box.panel_input1.text], [box.panel_input2.text]);
box.close();
}
box.center();
box.show();
}());
function changeArtboard(leftRight, topBottom) {
var activeDoc = app.activeDocument;
var selection;
var artboardLeftRight = leftRight * 2;
var artboardTopBottom = topBottom * 2;
var artboardBounds;
app.executeMenuCommand('group');
if (selection != '') {
selection = activeDoc.selection;
artboardBounds = selection[0].visibleBounds;
} else {
artboardBounds = activeDoc.visibleBounds;
}
artboardBounds[0] -= artboardLeftRight;
artboardBounds[1] += artboardTopBottom;
artboardBounds[2] += artboardLeftRight;
artboardBounds[3] -= artboardTopBottom;
activeDoc.artboards[0].artboardRect = artboardBounds;
app.executeMenuCommand('ungroup');
return false;
}
あとはKeyboard Maestroなりでこのスクリプトをショートカットキーで実行できるようにすれば完了です。
実行すると、下の画像のようなダイアログボックスが表示され、左右の余白と上下の余白が設定できます。
デフォルトは「0」なので余白が不要な場合はenterを押せばすぐ実行されます。
このように、スクリプトを使えばショートカットキーを1つにまとめたり、状況に応じて処理を分けられます。