土曜日, 6月 21, 2025

JavaScriptでAI遊び 52 
Illustratorでオブジェクトを角度と複製数で展開

Illustratorで任意オブジェクトを角度と複製数で展開します。

(function () {
var doc = app.activeDocument;
var sel = doc.selection;

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

var angle = Number(prompt("回転角度を指定(度):", "30"));
var copies = Number(prompt("コピー数を指定:", "12"));

if (isNaN(angle) || isNaN(copies) || copies < 1) {
alert("無効な入力値です");
return;
}

var centerX = 0, centerY = 0;
var count = 0;

// 中心座標を求める
for (var i = 0; i < sel.length; i++) {
var obj = sel[i];
centerX += obj.position[0] + obj.width / 2;
centerY += obj.position[1] - obj.height / 2;
count++;
}

centerX /= count;
centerY /= count;

for (var i = 1; i <= copies; i++) {
var cloned = sel[0].duplicate();
cloned.rotate(angle * i, true, true, true, true,
            Transformation.CENTER);
}

})();

任意のオブジェクトを選択して実行し・・・

デフォルトの30度12回で処理します。ただし、30度で12回すれば360度となるので、マイナス1の11で処理した方がいいですね。

処理結果に対して・・・

[パスファインダー]>[合体]で完了ですが、意外と効果が出ません。これは中心点の問題です。

そこで、中心点は塗りも線も指定しない矩形などとグループ化することで中心点を任意変更し・・・


45度7回で回転コピーすれば・・・

処理結果を調整出来ます。

ここで余計なオブジェだけを削除し・・・

[パスファインダー]>[合体]すれば完了です。