Как лучше всего решить проблему «автоматической группировки» всех артбордов?
Вместо того, чтобы перетаскивать поле выбора каждой монтажной области, а затем нажимать CMD + G, каждая страница имеет 8 монтажных областей, и мне, вероятно, придется просмотреть 80-150 страниц.
Для тех, кто разбирается в javascript, этот код похож на что-то работоспособное или мне следует его упаковать?
var doc = app.activeDocument;
for (var i = 0; i < doc.artboards.length; i++) {
doc.artboards.setActiveArtboardIndex(i);
var artboard = doc.artboards[i];
var itemsOnArtboard = [];
for (var j = 0; j < doc.pageItems.length; j++) {
var item = doc.pageItems[j];
if (artboard.artboardRect.toString() == item.visibleBounds.toString()) {
itemsOnArtboard.push(item);
}
}
if (itemsOnArtboard.length > 1) {
var group = doc.groupItems.add();
for (var k = 0; k < itemsOnArtboard.length; k++) {
itemsOnArtboard[k].moveToEnd(group);
}
}
}
Я ожидал, что Illustrator будет циклически просматривать каждую арт-доску и группировать содержимое каждой доски, пока, наконец, не дойдет до последней доски.
Код вроде сработал, пляжный мячик немного покрутился, но результата нет.
Что значит «8 артбордов и 80-100 страниц»? Разве страницы и артборды не одно и то же? Вы имеете в виду 8 артбордов и 80-100 файлов?





Наверное, что-то вроде этого:
var doc = app.activeDocument;
// create boxes
for (var i=0; i<doc.artboards.length; i++) {
var r = doc.artboards[i].artboardRect;
var box = doc.pathItems.rectangle(r[1], r[0], r[2]-r[0], -r[3]+r[1]);
box.filled = false;
box.stroked = false;
}
// group items
for (var i=0; i<doc.artboards.length; i++) {
doc.artboards.setActiveArtboardIndex(i);
doc.selectObjectsOnActiveArtboard();
app.executeMenuCommand('group');
}
Скрипт создает рамки вокруг всех артбордов активного документа и для каждого артборда группирует все его элементы.