使用 AI 生成 Adobe Illustrator v28.3 脚本,该脚本对每个单独画板的内容进行分组。无法让它工作

问题描述 投票:0回答:1

解决想要“自动分组”所有画板问题的最佳方法是什么?

与拖动每个画板的选择框,然后按 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 能够循环浏览每个画板,并对每个画板的内容进行分组,直到最终到达最后一个画板。

代码似乎执行了,沙滩球旋转了一下,但没有结果。

adobe adobe-illustrator extendscript
1个回答
0
投票

大概是这样的:

var doc = app.activeDocument;

for (var i=0; i<doc.artboards.length; i++) {
    var rect = doc.artboards[i].artboardRect;
    var box = doc.pathItems.rectangle(rect[1], rect[0], rect[2]-rect[0], -rect[3]+rect[1]);
    box.filled  = false;
    box.stroked = false;
    doc.artboards.setActiveArtboardIndex(i);
    doc.selectObjectsOnActiveArtboard();
    app.executeMenuCommand('group');
}

该脚本在活动文档的所有画板周围创建框,并在每个画板上对其所有项目进行分组。

© www.soinside.com 2019 - 2024. All rights reserved.