イラレで選択した複数オブジェクトの幅を縦横比を変えずに揃えるスクリプト

イラレで選択した複数オブジェクトの幅を縦横比を変えずに揃えるスクリプトが欲しかったので作った。車輪の再発明感ハンパないが、ちょっと探した限り、幅のみ変える(=縦横比が変わってしまう)スクリプトはあったのだが、縦横比を変えずに幅を揃えられるのはなかったので……。

仕様

  • 選択した複数オブジェクトの幅を、その中の最前面オブジェクトに揃える。
  • このとき、各オブジェクトの縦横比は変えないように変形する。
  • 選択オブジェクトが1つ以下の場合は何もしない。

準備

  1. 以下のソースコードを任意のテキストエディタに貼り付けて、拡張子jsxで保存する。ファイル名は任意。
  2. そいつをイラレスクリプトフォルダに入れる。

使い方

  1. 複数オブジェクトのうち、幅の基準としたいオブジェクトを一番上に持ってくる。
  2. 複数オブジェクトを選択する。
  3. イラレの「ファイル>スクリプト」メニューから上で保存したスクリプトを選択する。

GitHub

https://github.com/michihisa/AI-script-set-the-width-of-selected-objects

var selectedObj = activeDocument.selection;

// 選択オブジェクトが2つ以上なければ何もしない
if (selectedObj.length <= 1) {
  alert('オブジェクトを2つ以上選択してください。');
} else {
  // この幅に揃える
  var w = selectedObj[0].width;

  for (var i = 0; i < selectedObj.length; i++) {
    // 縦横比
    var ratio = w / selectedObj[i].width;

    // 変更後の高さ
    var h = selectedObj[i].height * ratio;

    // 変更
    selectedObj[i].width = w;
    selectedObj[i].height = h;
  }
}

備考

  • SPAiなどのイラレスクリプトランチャーがあるとより便利(ショートカット設定も行える)。 https://tama-san.com/spai/
  • 整列時のようにキーオブジェクトを指定して、そいつ基準で幅を揃えられると尚良かったのだが、少し調べた限りスクリプトでキーオブジェクトを取得する方法がわからなかった(誰か教えてくれると嬉しいです!)。できないっぽい(?)