日曜日, 2月 08, 2026

JavaScriptでAI遊び 86 
選択した円に指定数の円を隙間なく配置

選択した円の線に入力指定した数の円を隙間なく配置します。なお、円は正円であることが条件です。

/*
Illustrator Script
選択した円に指定数の円を隙間なく配置
*/

if (app.documents.length === 0) {
alert("ドキュメントがありません");
exit();
}

var doc = app.activeDocument;
var sel = doc.selection;

if (sel.length !== 1 || sel[0].typename !== "PathItem") {
alert("円(パス)を1つ選択してください");
exit();
}

// 円の数を入力
var count = prompt("配置する円の数を入力してください", "24");

if (count === null || isNaN(count) || count <= 0) {
alert("正しい数値を入力してください");
exit();
}

count = Number(count);

var base = sel[0];

// 元の円情報
var b = base.geometricBounds;
var cx = (b[0] + b[2]) / 2;
var cy = (b[1] + b[3]) / 2;
var radius = (b[2] - b[0]) / 2;

// 円周長
var circumference = 2 * Math.PI * radius;

// 小円の直径(隙間なし)
var d = circumference / count;

// 配置
for (var i = 0; i < count; i++) {
var angle = (2 * Math.PI / count) * i;

var x = cx + Math.cos(angle) * radius;
var y = cy + Math.sin(angle) * radius;

var c = doc.pathItems.ellipse(
y + d / 2,
x - d / 2,
d,
d
);

c.stroked = true;
c.filled = false;
}

任意の円を選択し・・・

実行すると、デフォルト値を表示したパレットが表示されます。

そのまま[OK]で上図の結果が得られます。

指定数は自由に設定できます。

上図は9に設定した結果です。