今回はIllustratorで選択したオブジェクトの線幅を2倍または半分にするスクリプトを作成します。
また以前ご紹介したSPAiを用いてそれらをショートカットキーにアサインし、キーボードで操作できるようにしましょう。
執筆時の環境
- Adobe Illustrator CC 20.1.0 (現時点の最新バージョン)
- OSX 10.9.5
コード解説
まずは線幅を2倍にするstrokeWidthTwice.jsx
について解説します。
最終的なコード
たった10行のコードです。例のごとく書いた順番で全行解説行ってみましょう!
ドキュメントが開かれているかの判定
if (app.documents.length > 0) { ... }
app.documents.length
は開いているドキュメントの数を表します。
つまり上記コードのifブロック
はドキュメントが最低ひとつ以上開かれているときに実行されるということになります。
ドキュメントが開いていなかった場合の安全装置ですね。
変数をまとめて宣言 (単一varパターン)
var selected = app.activeDocument.selection,
i,
magnification = 2;
JSXを書くときには僕はあまりやらないのですが、今回は一般的なJS開発で多用されるパターンを使用しています。
コードブロックの先頭でまとめて宣言をすることを俗に単一varパターンと呼びますが、それによってどんないいことがあるのかというお話をすると少々長くなるので今回は割愛します。*1
本コードで重要なのは下記ふたつの変数宣言です。
selected
: 選択したオブジェクトを配列として保持しますmagnification
: 倍率です。現在ここが2
になっていますが、これを0.5
とするだけで線幅を半分にするstrokeWidthHerf.jsx
を作ることができます
選択したオブジェクトすべてに対して線幅を変更する
forループ
で選択したオブジェクトのメンバをすべて取り出し、magnification倍
しています。
上述したとおり、magnification
が0.5
なら線幅は半分になりますし、10
ならば10倍
になります。
for (i = 0; i < selected.length; i++) { selected[i].strokeWidth *= magnification; }
即時関数で包んでおしまい
(function() { ... })();
で処理をくるむことでグローバルスコープへの名前空間汚染がなくせます。
線幅を半分にするstrokeWidthHerf.jsx
をつくる
magnification = 0.5;
の部分だけ変更しています。
(function () { if (app.documents.length > 0) { var selected = app.activeDocument.selection, i, magnification = 0.5; for (i = 0; i < selected.length; i++) { selected[i].strokeWidth *= magnification; } } })();
SPAiを利用してショートカットでスクリプトを起動できるようにする
もちろんショートカットを設定しなくても、SPAiをクリックすることでランチャーとしても使用できます。そのような使用法でも大いに便利です。
作成したスクリプトをIllustratorのスクリプトフォルダに保管
Illustrator > Presets > ja_JP > スクリプトに保存しておくとよいでしょう。
ショートカットへの登録
IllustratorとSPAiを起動し、SPAiのオプションから環境設定をクリックします。
各スクリプトフォルダの中を表示するにチェックが入っていれば、先程スクリプトフォルダに保存したふたつのファイルが確認できるでしょう。
あとはショートカットを設定していきます。これは動画を用意したのでご覧いただくと分かりやすいでしょう。
実際に使ってみる
先程設定したcmd+.
と`cmd+,
を使用して線幅を変更するデモを用意しました。*2
まとめ
いかがでしょうか。思いついたらすぐ書いてテストできるのがスクリプト言語の良いところです。
SPAiはJSXの開発中にも大いに威力を発揮するので、ぜひ導入しみてください。