火曜日, 4月 29, 2025

JavaScriptでAI遊び 46 
円の円周を指定して合致した正円を描画(RGB)

円の円周を指定して合致した正円を描画させます。(RGB版)

function mmToPoints(mm) {
return mm * 2.83465; // 1 mm ≈ 2.83465 pt
}

function createCenteredCircleByUserInput() {
if (app.documents.length === 0) {
alert("ドキュメントを開いてください。");
return;
}

var userInput =
        prompt("円周をmm単位で入力してください:", "300");
if (!userInput) return; // キャンセル時は終了

var circumferenceMM = parseFloat(userInput);
if (isNaN(circumferenceMM) || circumferenceMM <= 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;

var circumferencePt = mmToPoints(circumferenceMM);
var radiusPt = circumferencePt / (2 * Math.PI);
var diameterPt = radiusPt * 2;

// 円をアートボード中心に描画
var circle = doc.pathItems.ellipse(centerY +
        radiusPt, centerX - radiusPt, diameterPt, diameterPt);

// ランダムなRGB色を適用
var fillColor = new RGBColor();
fillColor.red = Math.random() * 255;
fillColor.green = Math.random() * 255;
fillColor.blue = Math.random() * 255;
circle.filled = true;
circle.fillColor = fillColor;
circle.stroked = true;
circle.strokeColor = new RGBColor(); // 黒い枠線
circle.strokeWidth = 1;
}

createCenteredCircleByUserInput();

実行したら、円周の長さを指定すれば・・・

描画します。色はRGBのランダム色で生成されます。