火曜日, 6月 03, 2025

JavaScriptでAI遊び 49 
Illustratorで集中線を描画

Illustratorで集中線を描画してみました。

// 集中線を作成するIllustratorスクリプト
function createSpeedLines() {
if (app.documents.length == 0) {
alert("ドキュメントが開かれていません。");
return;
}

var doc = app.activeDocument;
var artboard =
        doc.artboards[doc.artboards.getActiveArtboardIndex()];
var abBounds = artboard.artboardRect;
// アートボード中心座標
var centerX = (abBounds[0] + abBounds[2]) / 2;
var centerY = (abBounds[1] + abBounds[3]) / 2;

// ユーザー入力
var lineCount =
        parseInt(prompt("線の本数を入力:", "100"), 10);
if (isNaN(lineCount) || lineCount < 1) return;

var minLength =
        parseFloat(prompt("線の最小長さ (mm):", "50"));
var maxLength =
        parseFloat(prompt("線の最大長さ (mm):", "200"));
if (isNaN(minLength) || isNaN(maxLength) ||
        minLength >= maxLength) return;

var strokeWidth = parseFloat(prompt("線の太さ (pt):", "1"));
if (isNaN(strokeWidth) || strokeWidth <= 0) return;

var group = doc.groupItems.add(); // まとめるためのグループ

for (var i = 0; i < lineCount; i++) {
var angle = Math.random() * 360; // 0°〜360°のランダムな角度
var length = minLength + Math.random() *
            (maxLength - minLength); // ランダムな長さ

// 角度をラジアンに変換
var rad = angle * (Math.PI / 180);
// 終点の座標を計算
var endX = centerX + Math.cos(rad) * length;
var endY = centerY + Math.sin(rad) * length;
// 線を作成
var line = doc.pathItems.add();
line.setEntirePath([[centerX, centerY], [endX, endY]]);
line.stroked = true;
line.strokeWidth = strokeWidth;
line.filled = false;

line.move(group, ElementPlacement.PLACEATEND);
}

alert("集中線を作成しました!");
}

createSpeedLines();

実行して、各パラメーターの値を入力すれば描画が実行されます。

デフォルト設定の処理結果です。


ここで右上のようなオブジェをアートブラシ登録し・・・

作成した集中線に指定すれば上のようなイメージを簡単に作成出来ます。