Illustratorで選択したオブジェクトを数だけ指定してアートボード内に散布させるシンプル処理が必要だったので作ってみました。多分過去に作っていないと思います。処理結果はアートボードからはみ出すことはありません。
(function () {
if (app.documents.length === 0) {
alert("ドキュメントが開かれていません。");
return;
}
var doc = app.activeDocument;
// --------------------------------
// 選択チェック
// --------------------------------
if (doc.selection.length === 0) {
alert("散布するオブジェクトを選択してください。");
return;
}
// --------------------------------
// 散布数を入力
// --------------------------------
var input = prompt(
"散布する個数を入力してください。",
"50"
);
if (input === null) {
return; // キャンセル
}
var count = parseInt(input, 10);
if (isNaN(count) || count < 1) {
alert("1以上の整数を入力してください。");
return;
}
// --------------------------------
// 現在のアートボード
// --------------------------------
var ab = doc.artboards[doc.artboards.getActiveArtboardIndex()];
var abRect = ab.artboardRect;
var abLeft = abRect[0];
var abTop = abRect[1];
var abRight = abRect[2];
var abBottom = abRect[3];
// --------------------------------
// 選択オブジェクトを保存
// --------------------------------
var originals = [];
for (var i = 0; i < doc.selection.length; i++) {
originals.push(doc.selection[i]);
}
// --------------------------------
// 選択オブジェクトをグループ化
// --------------------------------
var group = doc.groupItems.add();
for (var i = 0; i < originals.length; i++) {
originals[i].move(group, ElementPlacement.PLACEATEND);
}
// グループの中心
var gb = group.geometricBounds;
var centerX = (gb[0] + gb[2]) / 2;
var centerY = (gb[1] + gb[3]) / 2;
// --------------------------------
// 複製してランダム散布
// --------------------------------
for (var i = 0; i < count; i++) {
var item = group.duplicate();
// オブジェクトサイズ
var b = item.geometricBounds;
var width = b[2] - b[0];
var height = b[1] - b[3];
// アートボード内に収まる範囲
var minX = abLeft + width / 2;
var maxX = abRight - width / 2;
var minY = abBottom + height / 2;
var maxY = abTop - height / 2;
// ランダム位置
var x = minX + Math.random() * (maxX - minX);
var y = minY + Math.random() * (maxY - minY);
// 移動
item.translate(
x - centerX,
y - centerY
);
// ランダム回転
var angle = Math.random() * 360;
item.rotate(
angle,
true,
true,
true,
true,
Transformation.CENTER
);
}
// --------------------------------
// 元オブジェクトを削除
// --------------------------------
group.remove();
// 選択解除
doc.selection = null;
alert(count + "個のオブジェクトをランダム配置しました。");
})();
べースとなるオブジェクト(※)を選択して実行すると・・・








