火曜日, 7月 07, 2026

JavaScriptでAI遊び 98 
Illustratorで選択したパスの太さを指定範囲でランダム変更

選択したパス(線幅)の太さを指定範囲でランダムに変更します。


// 選択したオブジェクトの線幅をランダム変更

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

if (doc.selection.length === 0) {
alert("オブジェクトを選択してください。");
} else {

var minWeight = parseFloat(prompt("最小線幅(pt)", "0.5"));
if (isNaN(minWeight)) exit();

var maxWeight = parseFloat(prompt("最大線幅(pt)", "5"));
if (isNaN(maxWeight)) exit();

if (minWeight > maxWeight) {
var temp = minWeight;
minWeight = maxWeight;
maxWeight = temp;
}

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

function applyRandomStroke(item) {

if (item.typename === "PathItem") {
if (item.stroked) {
item.strokeWidth =
                        randomWeight(minWeight, maxWeight);
}
}

else if (item.typename === "GroupItem") {
for (var i = 0; i < item.pageItems.length; i++) {
applyRandomStroke(item.pageItems[i]);
}
}

else if (item.typename === "CompoundPathItem") {
for (var j = 0; j < item.pathItems.length; j++) {
if (item.pathItems[j].stroked) {
item.pathItems[j].strokeWidth =
randomWeight(minWeight, maxWeight);
}
}
}
}

for (var k = 0; k < doc.selection.length; k++) {
applyRandomStroke(doc.selection[k]);
}

alert("線幅をランダム変更しました。");
}
}
パスを選択し実行すると・・・

最小線幅を指定し・・・

最大線幅を指定するだけです。

このパレットが表示されたら完了です。

上は処理結果です。ハンドルのある曲線やクローズパスにも対応します。

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