
指定サイズのランダム方眼を作成してみます。
アートボード中央に、指定の幅、高さ(mm)の範囲に収まる方眼を描画
マスのサイズはランダム(デフォルトは正方形)
横方向・縦方向に分割数を指定して、その範囲内でランダムに分割
グリッド線で描画(直前設定の線幅パス)
中々思うように出来ないのはご愛敬です(^o^)
// Illustrator Script - ランダムな方眼を指定サイズで作成
(function () {
if (app.documents.length === 0) {
alert("ドキュメントを開いてください。");
return;
}
var doc = app.activeDocument;
var unit = 2.834645; // mm to pt
var gridWidthMM = Number(prompt
("グリッドの幅を mm 単位で入力:", "100"));
var gridHeightMM = Number(prompt
("グリッドの高さを mm 単位で入力:", "100"));
var minCols = Number(prompt
("横方向の最小分割数:", "2"));
var maxCols = Number(prompt
("横方向の最大分割数:", "10"));
var minRows = Number(prompt
("縦方向の最小分割数:", "2"));
var maxRows = Number(prompt
("縦方向の最大分割数:", "10"));
if (isNaN(gridWidthMM) || isNaN(gridHeightMM) ||
isNaN(minCols) || isNaN(maxCols) ||
isNaN(minRows) || isNaN(maxRows)) {
alert("すべての値を正しく入力してください。");
return;
}
var gridWidth = gridWidthMM * unit;
var gridHeight = gridHeightMM * unit;
var centerX = doc.artboards
[doc.artboards.getActiveArtboardIndex()].
artboardRect[0] + doc.artboards[doc.artboards.
getActiveArtboardIndex()].artboardRect[2];
var centerY = doc.artboards
[doc.artboards.getActiveArtboardIndex()].
artboardRect[1] + doc.artboards[doc.artboards.
getActiveArtboardIndex()].artboardRect[3];
centerX /= 2;
centerY /= 2;
var left = centerX - gridWidth / 2;
var top = centerY + gridHeight / 2;
var colCount = Math.floor(minCols +
Math.random() * (maxCols - minCols + 1));
var rowCount = Math.floor(minRows +
Math.random() * (maxRows - minRows + 1));
var colWidths = randomSplit(gridWidth, colCount);
var rowHeights = randomSplit(gridHeight, rowCount);
var layer = doc.activeLayer;
var group = layer.groupItems.add();
var y = top;
for (var r = 0; r < rowHeights.length; r++) {
var x = left;
for (var c = 0; c < colWidths.length; c++) {
var rect = group.pathItems.
rectangle(y, x, colWidths[c], rowHeights[r]);
rect.stroked = true;
rect.filled = false;
x += colWidths[c];
}
y -= rowHeights[r];
}
function randomSplit(total, count) {
var points = [0];
for (var i = 0; i < count - 1; i++) {
points.push(Math.random());
}
points.push(1);
points.sort();
var sizes = [];
for (var i = 0; i < count; i++) {
sizes.push((points[i + 1] - points[i]) * total);
}
return sizes;
}
})();
実行すると矩形サイズと横と高さのグリッド数を指定します。
チョット微妙な結果ですね。処理結果はランダムなので、思い通りにはなりません。
ランダムじゃ無いのもアリですね。デフォルト環境でも矩形選択で処理出来ますが、矩形も同時に作図はありですね。