選択したオブジェクトの位置・スケール・回転・不透明度・塗りカラーをランダムに変化させるスクリプト。ダイアログで振れ幅を指定すると即時プレビューされ、[中央に集める][重なりを避ける]による再配置にも対応します。
- 移動距離を横・縦で個別に指定、または[連動]で同じ値を使用(単位はpt)
- スケール(幅・高さ)を%で指定、こちらも[連動]に対応
- 回転(0〜180°)、不透明度(0〜100%)をスライダーまたは数値で指定
- 塗りカラーの[シャッフル](選択内の色を入れ替え)と[完全シャッフル](ランダムな色を生成)
- [中央に集める]で選択オブジェクトを全体の中心へ集約
- [重なりを避ける]で、重ならない配置が見つかるまで移動範囲を広げながら再配置
- ステップボタン(∧∨)・↑↓キーで数値を増減(次の整数へ、shift+で次の10の倍数へ、option+で0.1ずつ)
- プレビューは毎回ベース状態から再計算するため、変形が積み増しにならない
- [リセット]/[キャンセル]でダイアログ起動前の状態へ復元(塗りカラーを除く)
- ダイアログの表示位置を記憶(Illustratorを終了すると忘れる)
- ドキュメントと選択状態を確認
- ダイアログを表示(移動距離・スケール・回転・不透明度・カラーを指定)
- 数値やスライダーを操作すると即時プレビュー
- [ランダム]で乱数を振り直す(カラーの反映もこのタイミング)
- OKで確定、キャンセルで起動前の状態に復元
- 振れ幅は「±指定値」の意味で、たとえば移動距離20ptなら-20〜20ptの範囲で動きます。
- 回転は0〜180°、不透明度は0〜100%が上限です。これを超える値を入力しても、その上限で頭打ちになります。
- チェックをONにすると入力欄に20が自動で入ります(縦のみ0のまま)。
- カラーは[ランダム]を押したときだけ反映されます。[シャッフル]は選択内の塗り色を入れ替え、[完全シャッフル]はドキュメントのカラーモードに合わせて色を生成します(CMYKのKは0〜30に抑えて暗くなりすぎないようにしています)。
- [シャッフル]は2つ以上、[完全シャッフル]は1つ以上のオブジェクト選択が必要です。
- 塗りカラーは[リセット]/[キャンセル]では元に戻りません。 位置・スケール・回転・不透明度は起動前の状態へ復元されますが、カラーだけは適用した時点で確定します。元に戻したいときは Illustrator 側で取り消し(command + Z)してください。
- 塗りカラーの対象は、パス/複合パス/テキスト/グループ(中の最初の対象)です。
- [重なりを避ける]は、1オブジェクトあたり300回まで位置を試し、置ききれないときは移動範囲を最大20倍まで段階的に広げます(重なり判定には5ptの余白を見込みます)。置ききれた場合だけ、広げた結果が移動距離の入力欄に書き戻されます(失敗したときは入力値をそのまま残します)。
- ダイアログを開いている間はライブコーナーの表示を一時的に切り替えます(プレビューの妨げになるため)。
https://note.com/dtp_tranist/n/nba8235fe91b2
- v2.1 (20260227) : [完全シャッフル]をランダム色生成に変更(CMYKのKは0〜30)、カラーの反映を[ランダム]実行時に統一
- v2.2 (20260305) : [重なりを避ける]の配置ロジックを、他スクリプトへ流用しやすい汎用関数として抽出
- v2.2.1 (20260819) : 不具合修正 — 回転・スケールのプレビューが[キャンセル]/[リセット]で元に戻らない(PageItemに存在しない
matrixで復元しようとしていたため。掛けた変形を逆順に打ち消す方式へ変更し、長方形だけ角度を戻す暫定処理を廃止。元から傾けて描いた長方形が水平になる問題も解消)、回転の入力欄からスライダーへの同期が効かない、回転がスライダーの上限(180°)を超えて適用される、スケールの[連動]で幅と高さに別々の乱数を使っていて縦横比が崩れる、移動距離の[連動]を切り替えてもプレビューが更新されない、[リセット]がプレビューの基準を戻さず[中央に集める]の位置が残る、[重なりを避ける]の結果が次のプレビューで失われる/失敗時に試行で散らばった位置が残る/置ききれなかったときも移動距離が書き換わる/入力欄が0のとき実際に使った移動距離が書き戻されない、×ボタンで閉じるとライブコーナーが戻らず変形も確定される、文字ツールで文字を選択したまま実行するとエラーになる。あわせて[リセット]でスライダーも0に戻すよう変更。整理として全体をIIFEでラップし、ヘッダーを概要+README参照に整理、基本情報ブロック(READMEリンク・紹介記事URL)を追加、ユーザー設定とレイアウトのブロックを分離、LABELSをカテゴリ分けしてgetLabel()に統一、UIヘルパー(setupPanel/setupRow/addPanel/addNumericFieldRow)で重複整理、移動距離とスケールのパネル生成を共通化、状態記録・プレビュー・パネル構築・ダイアログ結線を関数分割、全関数にJSDocを付与、変数・関数名を命名規約に統一、未使用コードを削除 - v2.3.0 (20260927) : 数値欄にステップボタン(∧∨)を追加。↑↓キーもステップボタンと同じ処理で増減するように変更(次の整数へ、shift+で次の10の倍数へ)
