火曜日, 12月 10, 2024

JavaScriptでAI遊び 31 
選択オブジェクトの90%〜10%サイズを10%刻みで作成

所用で、選択したオブジェクトを10%刻みで90%〜10%のサイズを作成するScriptを作って見ました。

// Illustrator Script:
// 選択したオブジェクトの90%~10%サイズを10%刻みで作成
function createScaledCopies() {
// アクティブなドキュメントを取得
var doc = app.activeDocument;

// オブジェクトが選択されているかチェック
if (doc.selection.length === 0) {
alert("オブジェクトを選択してください。");
return;
}

// 選択したオブジェクトを取得
var selectedItem = doc.selection[0];

// 元の位置を取得
var originalX = selectedItem.position[0];
var originalY = selectedItem.position[1];

// サイズを縮小してコピーを作成
// オブジェクトを90%から10%まで縮小
for (var scale = 90; scale >= 10; scale -= 10) {
// 複製
var copy = selectedItem.duplicate();

// 縮小率
var scaleFactor = scale / 100;

// サイズ変更
copy.resize(
scaleFactor * 100, // 水平方向のスケール
scaleFactor * 100, // 垂直方向のスケール
true, // ストロークとエフェクトをスケールする
true, // 線幅をスケールする
true, // パターンをスケールする
true, // パターンの線幅をスケールする
scaleFactor * 100, // 比率
Transformation.CENTER
);

// 位置調整(縦方向にずらす例)
// コピーごとに縮小され、位置を少しずらして配置
copy.position = [originalX, originalY - (scaleFactor * 100)];
}
}
createScaledCopies();

複雑なデータもグループ化していれば問題ありません。

実行直後はこんな感じです。作例では設定していませんが、線幅も対応します。

つまり選択したオブジェクトを含めれば全部で10個になります。