WebDesigner's Memorandumウェブデザイナーの備忘録

選択オブジェクトに合わせてアートボードを変更するillustratorのスクリプト

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なりでこのスクリプトをショートカットキーで実行できるようにすれば完了です。

選択オブジェクトに合わせてアートボードを変更するマクロ

実行すると、下の画像のようなダイアログボックスが表示され、左右の余白と上下の余白が設定できます。

illustratorアートボードサイズを変えるダイアログボックス

デフォルトは「0」なので余白が不要な場合はenterを押せばすぐ実行されます。

このように、スクリプトを使えばショートカットキーを1つにまとめたり、状況に応じて処理を分けられます。

著者について

プロフィール画像

サイトウ マサカズ@31mskz10

1997年生まれ。2016年から専門学校でデザインについて勉強。卒業後は神戸の制作会社「N'sCreates」にウェブデザイナーとして入社。このブログでは自分の備忘録も兼ねて、ウェブに関する記事や制作環境を効率的に行うための記事を書いています。

Twitterをフォロー Facebookでいいね