以前作成した時はタイリングの数だけでしたが、今回は選択した矩形を分割する展開です。
main();
function main() {
if (app.documents.length === 0) {
alert("ドキュメントが開かれていません");
return;
}
var doc = app.activeDocument;
if (doc.selection.length !== 1) {
alert("矩形を1つだけ選択してください");
return;
}
var item = doc.selection[0];
if (!(item.typename === "PathItem" && item.closed)) {
alert("閉じたパス(矩形)を選択してください");
return;
}
var cols = parseInt(prompt("横方向の分割数(列数)", "5"), 10);
var rows = parseInt(prompt("縦方向の分割数(行数)", "5"), 10);
if (isNaN(cols) || isNaN(rows) || cols <= 0 || rows <= 0) {
alert("正しい数値を入力してください");
return;
}
var bounds = item.geometricBounds;
var left = bounds[0];
var top = bounds[1];
var right = bounds[2];
var bottom = bounds[3];
var width = right - left;
var height = top - bottom;
var cellW = width / cols;
var cellH = height / rows;
item.remove();
function randomColor() {
var c = new RGBColor();
c.red = Math.random() * 255;
c.green = Math.random() * 255;
c.blue = Math.random() * 255;
return c;
}
for (var r = 0; r < rows; r++) {
for (var c = 0; c < cols; c++) {
var x = left + c * cellW;
var y = top - r * cellH;
var rect = doc.pathItems.rectangle(y, x, cellW, cellH);
rect.stroked = false;
rect.filled = true;
rect.fillColor = randomColor();
}
}
alert("完了!");
}
任意の矩形を選択し、横方向(列)、縦方向(行)を指定すれば・・・
上はデフォルトの値を実行した結果。
上は横方向(列)を16、縦方向(行)を6とした結果です。




