だいぶ前にアップした「指定半径の三角形からN角形を描画」の改訂版です。
ページの中心に指定した多角形までを全て描画することにしました。それぞれレイヤーで分かれているので後処理も楽です。
JavaScriptでAI遊び 40 指定半径の三角形からN角形を描画 2025/04/03●
function drawPolygons() {
if (app.documents.length === 0) {
alert("ドキュメントを開いてください。");
return;
}
var doc = app.activeDocument;
var artboard =
doc.artboards[doc.artboards.getActiveArtboardIndex()];
var artboardBounds = artboard.artboardRect;
// アートボードの中央座標
var centerX = (artboardBounds[0] + artboardBounds[2]) / 2;
var centerY = (artboardBounds[1] + artboardBounds[3]) / 2;
// ユーザーに最大のN角形の辺数を入力させる(最小3)
var maxSides = parseInt(prompt
("最大N角形の辺の数を入力してください(3以上):", "6"), 10);
if (isNaN(maxSides) || maxSides < 3) {
alert("正しい値を入力してください(3以上)。");
return;
}
// ユーザーに半径を入力させる
var radius = parseFloat(prompt
("多角形の半径(mm)を入力してください:", "50"));
if (isNaN(radius) || radius <= 0) {
alert("正しい半径を入力してください。");
return;
}
// mmをIllustratorの単位に変換
var unitConversion = 2.83465; // mm -> pt
radius *= unitConversion;
for (var sides = 3; sides <= maxSides; sides++) {
var angleStep = (2 * Math.PI) / sides;
var pathPoints = [];
for (var i = 0; i < sides; i++) {
// 上を基準に回転
var angle = -Math.PI / 2 + angleStep * i;
var x = centerX + radius * Math.cos(angle);
var y = centerY + radius * Math.sin(angle);
pathPoints.push([x, y]);
}
// パスの作成
var polygon = doc.pathItems.add();
// 始点と終点を結ぶ
polygon.setEntirePath(pathPoints.concat([pathPoints[0]]));
polygon.closed = true;
polygon.stroked = true;
polygon.filled = false;
}
alert("三角形から " + maxSides + " 角形まで描画しました!");
}
drawPolygons();
実行したらN角形までの数を入力後に半径値を入力すれば・・・
ページの中央に描画されます。