指定したサイズ内にランダムな矩形を敷き詰めます。RGB版ですが、CMYKモードでも機能します。
#target illustrator
function randomColor() {
return [Math.random() * 255, Math.random() *
255, Math.random() * 255];
}
function main() {
if (app.documents.length == 0) {
alert("ドキュメントを開いてください。");
return;
}
var doc = app.activeDocument;
// 入力ダイアログでサイズを取得
var w = Number(prompt("全体の幅 (mm)", "150"));
var h = Number(prompt("全体の高さ (mm)", "150"));
if (isNaN(w) || isNaN(h) || w <= 0 || h <= 0) {
alert("正しい数値を入力してください。");
return;
}
// mm → pt変換
var mmToPt = 2.834645;
var totalWidth = w * mmToPt;
var totalHeight = h * mmToPt;
var startX = 0;
var startY = 0;
while (startY < totalHeight) {
var remainingHeight = totalHeight - startY;
var rowHeight =
Math.min(remainingHeight, (Math.random() *
remainingHeight * 0.5) + 10);
var currentX = 0;
while (currentX < totalWidth) {
var remainingWidth = totalWidth - currentX;
var rectWidth =
Math.min(remainingWidth, (Math.random() *
remainingWidth * 0.5) + 10);
// ランダムカラー
var rgb = randomColor();
var rect = doc.pathItems.rectangle(
-startY, // y位置(上がマイナス)
currentX, // x位置
rectWidth,
rowHeight
);
rect.filled = true;
rect.fillColor =
makeRGBColor(rgb[0], rgb[1], rgb[2]);
rect.stroked = false;
currentX += rectWidth;
}
startY += rowHeight;
}
}
function makeRGBColor(r, g, b) {
var c = new RGBColor();
c.red = r;
c.green = g;
c.blue = b;
return c;
}
main();
実行すると敷き詰める矩形のサイズを指定します。
処理結果。