円の円周を指定して合致した正円を描画させます。(CMYK版)
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);
// ランダムなCMYK色を適用
var fillColor = new CMYKColor();
fillColor.cyan = Math.random() * 100;
fillColor.magenta = Math.random() * 100;
fillColor.yellow = Math.random() * 100;
fillColor.black = Math.random() * 0;
circle.filled = true;
circle.fillColor = fillColor;
circle.stroked = true;
// 黒いCMYK枠線を設定
var strokeColor = new CMYKColor();
strokeColor.cyan = 0;
strokeColor.magenta = 0;
strokeColor.yellow = 0;
strokeColor.black = 100;
circle.strokeColor = strokeColor;
circle.strokeWidth = 1;
}
createCenteredCircleByUserInput();
実行したら、円周の長さを指定すれば・・・
描画します。色はCMYKのランダム色で生成されます。
なお、CMYでのランダム色で黒は使いません。