日曜日, 10月 13, 2024

JavaScriptでAI遊び 26 
指定サイズの正方形をランダム色でタイリング(RGB版)

指定サイズの正方形をランダム色でタイリングさせます。
(RGB版)

/* square_tile_rgb */
function mmToPoints(mm) {
return mm * 2.83465; // 1mm = 2.83465ポイント
}

function randomRGBColor() {
// ランダムなRGBカラーを生成
var color = new RGBColor();
color.red = Math.random() * 255;
color.green = Math.random() * 255;
color.blue = Math.random() * 255;
return color;
}

function createTiledSquares
(rows, cols, squareSizeMm, spacingMm) {
var doc = app.activeDocument;
// mmサイズをポイントに変換
var squareSize = mmToPoints(squareSizeMm);
var spacing = mmToPoints(spacingMm);
// ドキュメントのアートボードの範囲を取得
var artboard =
doc.artboards[doc.artboards.getActiveArtboardIndex()];
var abRect = artboard.artboardRect;
var abLeft = abRect[0];
var abTop = abRect[1];
// 配置開始位置を計算
var startX = abLeft;
var startY = abTop;

// 正方形をタイル状に配置
for (var row = 0; row < rows; row++) {
for (var col = 0; col < cols; col++) {
// 正方形の位置を計算
var x = startX + col * (squareSize + spacing);
var y = startY - row * (squareSize + spacing);

// 新しい正方形を作成
var square =
doc.pathItems.rectangle(y, x, squareSize, squareSize);

// 正方形にランダムなRGB色を設定
square.fillColor = randomRGBColor();
square.stroked = false; // 線なし
}
}
}

if (app.documents.length > 0) {
// ユーザー入力を取得
var rows =
parseInt(prompt("行数を入力:", "10"), 10);
var cols =
parseInt(prompt("列数を入力:", "10"), 10);
var squareSizeMm =
parseFloat(prompt("正方形のサイズをmm単位で入力:", "20"));
var spacingMm =
parseFloat(prompt("正方形間の隙間をmm単位で入力:", "0"));
// 入力が有効な場合に正方形を配置
if (!isNaN(rows) && !isNaN(cols) &&
        !isNaN(squareSizeMm) && !isNaN(spacingMm)) {
createTiledSquares(rows, cols, squareSizeMm, spacingMm);
} else {
alert("有効な入力をしてください。");
}
} else {
alert("ドキュメントを開いてください。");
}
/* square_tile_rgb */

(Type A)行数、列数、サイズ、間隔を指定

Type Aの結果

(Type B)行数、列数、サイズ、間隔を指定

Type Bの結果