作業中のファイルのど真ん中に円を描く・・・なのですが、結果が不安定で困惑中です。
/* center_circle.jsx */
// 現在のアクティブなドキュメントを取得
var doc = app.activeDocument;
// ユーザーに半径を入力させる
var radiusInput = parseFloat(prompt(
"円の半径を入力してください(ピクセル)", "50"));
if (isNaN(radiusInput) || radiusInput <= 0) {
alert("正しい半径を入力してください。");
} else {
// ドキュメントの幅と高さを取得
var docWidth = doc.width;
var docHeight = doc.height;
// 円の中心座標を計算
var centerX = docWidth / 2;
var centerY = docHeight / 2;
// 円を描く
var circle = doc.pathItems.ellipse(centerY + radiusInput,
centerX - radiusInput, radiusInput * 2, radiusInput * 2);
// Illustratorの円描画は左上から描くので、
// centerY - radiusInputではなくて
// centerY + radiusInput
// 円の属性を設定
circle.strokeColor = new RGBColor();
circle.fillColor = new NoColor();
circle.strokeWidth = 2;
// 円を選択状態にする
circle.selected = true;
}
/* center_circle.jsx */
実行すると描画する円の半径を求めてきます。
Illustratorは円を直径で描くので間違えないでください。
直径入力にする場合は・・・
var radiusInput = parseFloat(prompt(
"円の半径を入力してください(ピクセル)", "50"));
↓
var radiusInput = parseFloat(prompt(
"円の直径を入力してください(ピクセル)", "100"));
var circle = doc.pathItems.ellipse(centerY + radiusInput,
centerX - radiusInput, radiusInput * 2, radiusInput * 2);
↓
var circle = doc.pathItems.ellipse(centerY + radiusInput/2,
centerX - radiusInput/2, radiusInput, radiusInput);
のように変更してください。
以下の環境で確認すると・・・ファイルによって動作が狂います。上手くいくファイルも再処理で狂ったりして意味不明です。正しく動作したり狂ったりなので、Illustrator側に問題があるのかもしれません。
Illustrator 27.7(Windows)
Illustrator 27.8.1(mzcOS)