水曜日, 8月 12, 2026

JavaScriptでAI遊び 103 
Illustratorで選択したオブジェクト線幅を指定範囲でランダム設定

選択したオブジェクトの線幅を指定範囲でランダムに設定します。予め全体を任意の線幅に設定しておきます。

// 選択オブジェクトの線幅をランダムに設定

if (app.documents.length === 0) {
alert("ドキュメントを開いてください。");
} else if (app.activeDocument.selection.length === 0) {
alert("オブジェクトを選択してください。");
} else {

var min = Number(prompt("最小線幅(pt)", "0.5"));
var max = Number(prompt("最大線幅(pt)", "5"));

if (isNaN(min) || isNaN(max) || min > max) {
alert("数値を正しく入力してください。");
} else {

var sel = app.activeDocument.selection;

for (var i = 0; i < sel.length; i++) {
setStrokeRandom(sel[i], min, max);
}

alert("完了しました。");
}
}

function setStrokeRandom(obj, min, max) {

switch (obj.typename) {

case "PathItem":
if (obj.stroked) {
obj.strokeWidth = random(min, max);
}
break;

case "CompoundPathItem":
for (var i = 0; i < obj.pathItems.length; i++) {
if (obj.pathItems[i].stroked) {
obj.pathItems[i].strokeWidth = random(min, max);
}
}
break;

case "GroupItem":
for (var j = 0; j < obj.pageItems.length; j++) {
setStrokeRandom(obj.pageItems[j], min, max);
}
break;
}
}

function random(min, max) {
return min + Math.random() * (max - min);
}

ここでは全体を1ptに設定して実行すると・・・

最小線幅を設定し・・・

続けて最大線幅を設定すれば・・・


直ぐに完了します。

処理結果はこんな感じです。

※Illustratorのアップデートで不具合が出る場合があります。気がついた時点でデバッグするように心がけていますが、すぐに対応できないのでご容赦ください。