Illustratorでオブジェクトを並べるスクリプトを書いてみた


こんにちは。masuyamaです。

スマートエデュケーションのアプリケーションの画像リソース作成には、Adobe Illustratorがよく使われるようです。
そして、2Dグラフィックを扱っているとどうしても発生する作業にスプライトシートを作る作業があります。
通常は外部ツールを用いてこの作業を行うのですが、デザイナーさんからIllustrator上でカジュアルにやりたいという要望があったので作ってみました。

IllustratorでのScript作成環境

最近のAdobe製品はJavaScriptでプラグインを記述することができます。
さらに、開発環境“ExtendScript Toolkit CC(ESTK)”も提供されており、誰でも簡単にスクリプトが組めるようになっています。

まずは、ESTKを起動してみます。
ソース 1_2015-8-13_13-54-50_No-00
IDEのような馴染み深い画面が表示されました。
Illustratorも起動してテストプログラムを書いてみます。

#target "illustrator"

(function(){
    alert("test", "test", true);
})();

画面にアラートダイアログを表示するだけのスクリプトです。
実行してみます。

NoName_2015-8-13_14-4-58_No-00

ダイアログが表示されました。

選択されたオブジェクトを移動する

Illustratorで何かオブジェクトを作って、それを選択した状態で実行します。

#target "illustrator"

(function(){
    if (app.documents.length > 0 ) {
        for (var i = 0 ; i < app.selection.length ; i++) {
            app.selection[i].translate(100.0, 100.0);
        }
    }
})();

selectionに選択したオブジェクトのリストが入っているので、その中身を全てx方向に100、y方向に100移動させます。

NoName_2015-8-13_14-15-56_No-00

緑の長方形だけ選択して実行してみます。

NoName_2015-8-13_14-16-11_No-00

右上に移動しました。
xは右方向がプラス、yは上方向がプラスのようです。

並べるアルゴリズム

Illustrator上で並べたいというのは、そのあとさらにIllustrator上で触りたい、ということなので
ここはあまりがんばりません。
こちらあたりの記事を参考にアルゴリズムを記述します。

とりあえず完成?

長いのでGistで公開します。
https://gist.github.com/masuyama/a2f00d2f838ccf7bf129

こんな配置が

NoName_2015-8-13_14-32-56_No-00

こんなふうに並びます。

NoName_2015-8-13_14-33-31_No-00

並べるサイズが2048×2048で固定でサンプルのアートボードと一致していないため、
きれいに敷き詰められはしませんが、整列はできました。

参考

スクリプト作成に関しては以下のサイトを参考にさせていただきました。

まとめ

スマートエデュケーションではこんな私たちと一緒に仕事をしてくれるデザイナーを募集しています。
詳細についてはこちらをご覧ください
ツール作りは全力でサポートします。