shspage.com
/aijs/
Tweet
s.h's page - [Illustrator] JavaScript scripts
(
English page
)
JavaScript で書いたスクリプトです。Adobe Illustrator CC (64 bit) Win/Mac版で動作を確認しています。 Illustrator CS3 およびそれ以降のWin/Mac版で動作すると思います。お気づきの点などありましたらメール(
送信フォーム
)や
@shspage
(Twitter) でお知らせいただけると嬉しいです。
以下の「
#もくじ
」にあるスクリプトを単一アーカイブに詰め合わせてあります。
download
:
aics_scripts.zip
MITライセンス(※)のフリーウェアです。
※ 要約すると、改変再配布ほぼ自由、保証なし、ということです。
その他の雑多なスクリプト、スクリプトの更新情報、プラグイン版、エクステンション版については、
はてな
とか
英語版ブログ
を見てください。
Github
にもあります。
2018.07.20
選択オブジェクトを処理するスクリプトで、選択したグループ内のロック/不可視オブジェクトを処理から除外するようにしました。
2017.05.13
「円弧にする」通常のパスと同様にテキストパスを補正する機能を追加しました。
2017.03.12
「適当に連結」設定した距離以上に離れたアンカーポイントは連結しないようにできるオプションを追加しました。
2016.11.26
「メタボール」「メタボール(円弧)」「角を丸くするplus」で win.enabled を変更する箇所に try ... finally ステートメントを追加しました。
2015.07.07
「メタボール」「メタボール(円弧)」でスライダーの横の数値を入力できるようにしました。「角を丸くするplus」(旧 角を丸くする+) でスライダーを削除して数値を入力する形式にしました。
2013.12.31
最近のAiで標準なった機能を持つスクリプトを、doc フォルダの中に移動しました。また、scriptUI を使う前のバージョンなども doc フォルダの中に入れました。
もくじ
#スクリプトの使い方
#処理対象となる選択範囲について
#複合パスについて
アルキメデスらせん
円弧にする
アンカー順を逆転
サインカーブ
パスの長さ
パス分割
メタボール(円弧)、メタボール
外接円を描く
角を丸くする+
共通接線
指定アンカー数の楕円にする
重複アンカーを整理
選択アンカーのところで切断
選択アンカーの位置に複製
選択アンカーを削除
適当に連結
旧バージョン その他
( アーカイブ中の doc / legacy_and_extra フォルダにあります)
Dance
ハンドルを伸ばす
メタボール(円弧)、メタボール:(古いUI)
円を描く
選択アンカーから接線を描く
角を丸くする+:(古いUI)
破線調整(端は半分)
破線調整
木のようなものを描く
矢印
#スクリプトの使い方
メニューの「ファイル > スクリプト > その他のスクリプト…」から、実行したいスクリプトファイルを選んでください。
スクリプトを「ファイル > スクリプト」の中に表示したい場合は、"
アプリケーション/Adobe Illustrator CC/プリセット/ja_JP/スクリプト
"(Mac)、"
Program Files\Adobe\Adobe Illustrator CC\Presets\ja_JP\スクリプト
"(Win) 内にスクリプトファイルを置いてください。(Illustrator™ が実行中の場合は、いったん終了する必要があります。"Illustrator CC" の部分はご使用のバージョンに置き換えてください。複数バージョンをインストールしている場合、それぞれ別のスクリプトフォルダがあります。また、バージョンによってフォルダ構成は上記とは異なることがあります。あらかじめ存在している「スクリプト」フォルダをご利用ください。 なお、Windowsの "Program Files" は "Program Files(x86)" の場合もあります。)
スクリプトの書き方など、くわしいことは Adobe の PDF ドキュメントをご覧ください。
http://www.google.com/search?q=site:www.adobe.com+illustrator+javascript+reference
#処理対象となる選択範囲について
いくつかのスクリプトは、選択されているアンカーもしくはセグメントのみを処理対象にします。(「セグメント」は、アンカーとアンカーの間の線です。)
「選択されている部分」とは、言い換えれば、切り取りやコピーの対象になる部分ということです。パスの一部分を選択する際には、白い矢印の選択ツールを使ってください。黒い矢印の選択ツールや、+印の付いた選択ツールでは、パス全体が選択されます。
また、ライブオブジェクト(ワープ、ブレンド、効果、パスファインダなど)は、スクリプトで詳細な属性(アンカー個々の位置など)が取得できないため、処理対象になりません。必要に応じて拡張してください。(効果を適用したパスについて動作する場合は、効果を適用する元のパスが処理対象になりますので、ご注意ください。)
#複合パスについて
現状、
複合パスの中のグループの中のパス
(複合パスを解除すると「グループ」として現れるパス)は、スクリプトから操作することができません。白い矢印ツールで複合パスの一部分を選択した場合は、たぶん操作できます。
アルキメデスらせん
アルキメデスらせん(近似)を描きます。
↑
円弧にする
適当に円弧っぽく描いた曲線を選択して実行すると、ちゃんとした円弧に矯正します。
しくみ:選択したパスのそれぞれについて、パスの両端の点を通り、かつ、両端を結んだ線が接線となる位置のうちの、最も遠いものに接する円弧に矯正します。接線がない場合は何もしません。
2017-05-13:
通常のパスと同様にテキストパスを補正する機能を追加しました。
↑
アンカー順を逆転
選択されているパスのアンカーの順番を逆にします。ブラシの向きを逆にするときなどに使ってます。
2009-05-23: 実行後にダイアログを表示する部分をコメントアウトしました。
↑
サインカーブ
アートボードの原点からサインカーブ(近似)を描きます。
座標値は
Don Lancaster's Guru's Lair Cubic Spline Library
のドキュメントから拝借させていただきました。
↑
パスの長さ
パスの長さをテキストオブジェクトにして、パスの真中あたりに書き出します。「
all:
」は選択パス全部の長さの合計です。
長さの単位は mm に換算してます。Pt とかのほうがよければスクリプト冒頭の変数を設定してください。
CS3以降では、パスの属性として「length」が追加されているため、これを使って、直接長さを取得します。スクリプト内の "use_native_property" オプションを "false" にすることで、バージョンに関係なく数式で長さを計算させることも可能です。
【注】パスの属性「length」と、数式での計算は、特に複雑なパスでは若干異なる数値を返します。違いはおおむね 0.05 mm 以内のようです。
↑
パス分割
選択した辺を,指定した数で等間隔に分割します。
オブジェクト・メニューの「アンカーポイントを追加」コマンドは、ベジエ曲線のパラメータを使って分割するため等間隔に分割されないのです。
↑
メタボール(円弧)、メタボール
複数の円を選択して実行すると、メタボール風に連結する形状を作成します。その際、「メタボール(円弧)」は円弧を、「メタボール」は適当なベジエ曲線を用います。
選択されているのが本当に円かどうか、という確認はしていません。
作成された形状をパスファインダで合成すると、重複したアンカーができることがあります。この場合、別掲の「重複アンカーをまとめる」スクリプトなどでアンカーを整理してください。
↑
外接円を描く
【
しくみ
】 0 , 2 番目のアンカーを結んだ線と、1 , 3 番目のアンカーを結んだ線(※1)の垂直二等分線の交点を中心として円を描きます。半径は、0 , 1 番目のアンカーと中心をそれぞれ結んだ線のうち長いほうを採ります。
そもそも、星型の外接円を描きたいという目的で作ったので、ややこしい処理をしています。逆に、図形に外接円が存在するかどうか、4 番目以降のアンカーが 描いた円の周上にあるのか、といったことの確認は省略しています。
※1:三角形の場合は 1 , 2 番目のアンカー
↑
角を丸くする+
選択した角を丸めます。標準のフィルタを適用できないような角も丸めます。
動作確認: Illustrator CC (Win/Mac)scriptUI を使っているため CS3 以降でないと動きません。古いバージョン用のものを、圧縮ファイルの中の doc/legacy フォルダに置いてあります。
パスを選択して実行すると、オプションを指定するウィンドウが出ますので指定してください。
以下共通事項・補足
"radius"(半径) とありますが、角が直角の場合以外は円弧にはなりません。丸めかたを「角を丸くする」効果(で期待通りに丸まる場合)とほぼ同じにしているため、設定値の名称を合わせました。
丸まっている角は丸めません。たとえば 円を選択して実行しても何もしません。
辺の両端近くにポイントを追加するため、元のポイントが多すぎると、思ったように丸まらない場合があります。
丸める過程で余計なポイントを整理します。
↑
共通接線
選択されている曲線セグメントに共通する接線を描きます。
↑
指定アンカー数の楕円にする
選択したパスを、それぞれの幅と高さに収まる楕円に変えます。望みのサイズや色で描いた円を選択して、スクリプトを実行し、アンカー数をプロンプトで指定してやると、そのアンカー数の円になる、という使い方を想定しています。が、スクリプトは「元のパスの幅と高さに収まる楕円を描く」としか考えてないので、選択したパスが円でなくても、三角でも四角でも直線でも、ぜんぶ楕円に変えるという強引な仕様にしています。
以前の、単純に円を描くだけのバージョン(「円を描く.jsx」)を doc フォルダの中に置きました。
↑
重複アンカーを整理
選択されているパスの中で、距離が近いアンカーポイントを1つにまとめます。
処理後、減らしたアンカーポイントの数を報告します。(まとめる対象にする距離、および、報告するパスの数の上限を、スクリプト中で指定しています)
↑
選択アンカーのところで切断
選択アンカー位置でパスを切断します。
↑
選択アンカーの位置に複製
選択されているもののうち最前面のものを、その他のものの選択されているアンカーの位置に複製します。
複製したいものが複数のオブジェクトで構成されている場合は、一つのものとして扱われるようにグループ化してください。
↑
選択アンカーを削除
選択アンカーを削除します。「アンカーポイントの削除」ツールでポチポチするのが面倒だったので。
↑
適当に連結
鉛筆ツールで、精度を細かめに設定して描いてるときとか、パスが込み入ってるときとか、他の線とつなげたくても端のアンカーが選択しにくいときがあるので、作ってみました。
スクリプトの冒頭に挙動の設定がいくつかあります。以下は設定項目とデフォルト値です。
conf.close
= true; // 連結したパスを閉じます。
conf.marge_if_nearer_than
= 0.5; // これより近いアンカーは1つにまとめます。0を設定すると無効になります。(単位:mm)
conf.ignore_if_further_than
= 0; // これより離れたアンカーは連結しません。0を設定すると無効になります。(単位:mm)
conf.hanLen
= 0.33; // 連結した線につけるハンドルの長さの比率です。0を設定するとハンドルを追加しません。
conf.dontAddRevHan
= 120; // 連結した箇所の角度がこれ以上の場合、ハンドルを追加しません。0を設定すると無効になります。 (単位:度, 0-180)
↑
旧バージョン その他
以下のようなものを、圧縮ファイル中の doc/legacy_and_extra フォルダに入れています。
Aiの最近のバージョンで標準になった機能をもつスクリプト
古いAiと互換性がなくなったスクリプトの、古い(以前のAiでも使える)バージョン
機能追加して複雑になったスクリプトの、以前の単純なバージョン
いまいち使い道がわからないもの
オマケ扱いのもの
Dance
こんなふうに人をたくさん描きます。いろいろな線幅の線を組み合わせて描いているため、拡大縮小するときは、ツールの設定に注意してください。
↑
ハンドルを延ばす
選択アンカーのハンドルを、指定した割合で伸ばします。実行すると数値指定用のウィンドウが出てくるので、割合を%単位で入力してください。
↑
メタボール(円弧)、メタボール:(古いUI)
scriptUI を使用する前のバージョンです。
円を描く
指定アンカー数の楕円にする
の以前のバージョンです。アクティブなアートボードの真ん中に指定したアンカー数の円を描きます。
選択アンカーから接線を描く
選択範囲のパスの中で、アンカーが1つだけ選択されているパスを(前面から順に)探し、そのアンカーから他の選択されている曲線に接線を描きます。
作成した接線の接点側にはハンドルが作成されるため、始点アンカー側を動かしても接点側の線の傾きは維持されます。
孤立点を始点とした場合、その孤立点は実行後に削除されます。
↑
角を丸くする+:(古いUI)
scriptUI を使用する前のバージョンです。
破線調整(端は半分)
選択されている破線について、各アンカーの位置に、破線の設定値の最初の部分の真ん中がくるように、設定値を調整します。CS5以降は線種パレットで設定できますね。
ただし、イラレでは、アンカー間ごとに破線の設定を変えることは出来ないため、あるアンカーの前後で、隣のアンカーとの間の長さが異なる場合は、そのアンカーの位置でパスを分割し、分割したそれぞれのパスに、最適な設定値を設定します。このように分割したパスはグループ化されます。
↑
破線調整
↑
木のようなものを描く
スクリプト冒頭に変更可能な設定数値がいろいろあります。いろいろな線幅の線を組み合わせて描いているため、拡大縮小するときは、ツールの設定に注意してください。
図の木の下の円弧みたいのは描きません。描くのは1回の実行で1本です。
↑
矢印
選択されているパスの両端を調べて、アンカーが選択状態にある場合、そこに矢印を描きます。矢印の先端は、選択アンカーの位置になります。 パスの端は、矢印の先から はみ出さないように適当に移動されます。 CS5以降は線種パレットで設定できますね。
「矢印」「矢印(塗りつぶし)」の2つを同梱しています。内容は、スクリプト冒頭の設定箇所での fill の値(true/false)が違うだけです。
矢印を作る際に、突出線端のパスは、バット線端に変更されます。
↑