如何使用Javascript对Illustrator CC中的文档上的所有对象进行分组?

时间:2017-09-25 16:57:43

标签: javascript object grouping adobe-illustrator extendscript

如何使用Javascript对Illustrator CC中的文档上的所有对象进行分组?我尝试制作一个脚本,我需要对文档中的所有对象进行分组,没有错误和正确。在官方指南中,我没有找到这样的功能。下面的代码没有正确分组对象。对象会更改位置并移动到前景或背景。谁能帮帮我?

function group(){     
    var docRef = app.activeDocument;
    var layerRef = docRef.layers[0];

    layerRef.hasSelectedArtwork=true;
    docSelection = app.activeDocument.selection;
    newGroup = app.activeDocument.groupItems.add();
    for ( i = 0; i < docSelection.length; i++ ) {
        newItem = docSelection[i];
        newItem.moveToBeginning( newGroup );
    }
}

2 个答案:

答案 0 :(得分:1)

我尝试用你的代码做同样的事情并让一切都逆转。问题在于你在循环中取元素[i]并将其移动到组中,因此选择数组的长度不同,从0到长度的循环不再有效。 我在选择数组上尝试了一个从0到长度的循环,但每次只移动最后一个选择元素:

layer.hasSelectedArtwork = true;
var selection = activeDocument.selection;
var groupItem = layer.groupItems.add();
var count = selection.length;
for(var i = 0; i < count; i++) {
    var item = selection[selection.length - 1];
    item.moveToBeginning(groupItem);
}

对我来说,它有效。我希望它可以帮到你。

答案 1 :(得分:0)

可以通过以下方式完成:

app.executeMenuCommand('selectall');
app.executeMenuCommand('group');

取消隐藏和解锁所有对象之前可能是有意义的:

app.executeMenuCommand('showAll');
app.executeMenuCommand('unlockAll');

Illustrator的菜单命令的完整(?)列表在这里:https://github.com/ten-A/AiMenuObject