释放所有剪贴蒙版和分组等的 Illustrator 脚本

平面设计 adobe-illustrator 自动化 插画脚本 剪贴蒙版
2022-02-04 18:15:07

是否有可用于 Illustrator 的脚本,允许释放所有剪贴蒙版、分组和复合路径?本质上是一个可以将文件分解为原始部分的脚本。

4个回答

您不需要脚本即可一次性释放所有剪贴蒙版,只需执行以下操作:

  • 选择->对象->剪贴蒙版
  • 编辑->清除

但也可以通过脚本完成:

app.executeMenuCommand("Clipping Masks menu item"); 
app.executeMenuCommand("clear");

取消组合所有对象并释放所有复合路径也是如此:

app.executeMenuCommand("selectall"); 
app.executeMenuCommand("ungroup");
app.executeMenuCommand("noCompoundPath");

给你(这不是超级彻底的测试,如果它有一个错误让我知道我会支持你):

 #target illustrator

// releaseEverything.jsx
//
// Copyright (c) 2017 Janne Ojala
//
// Licence: https://opensource.org/licenses/MIT

(function(){


var objs = app.activeDocument.pageItems;
// or if you want only selection use app.activeDocument.selection
traverseSceneObjects(objs);


function traverseSceneObjects(pageItems){

    for (var iter=0 ; iter<pageItems.length; iter++ ){
        var item = pageItems[iter];
        var typename = item.typename;

        // apply action or get the subitems of object
        if (typename === "PathItem"){
            item.clipping = false;

        } else if (typename === "GroupItem") {
            traverseSceneObjects( item.pageItems );
            release( item, "pageItems" ); 

        } else if (typename === "CompoundPathItem" ) {
            traverseSceneObjects( item.pathItems );
            release( item, "pathItems" );
        }

    }

}


function release(obj, action) {

    for (var i=obj[action].length-1 ; i>=0; i--){
        obj[action][i].move( obj, ElementPlacement.PLACEAFTER );

    }

}

})();

但是我个人不会使用这种东西。更好地进行选择性扁平化并具有更多的协同效益。

注意:这适用于整个文件。如果您希望它仅适用于选择,请将行更改var objs = app.activeDocument.pageItems;var objs = app.activeDocument.selection;

我认为根据需要交替使用 CMD-A 和 CMD-8 键命令并不难,但是如果您愿意,您可以在一个动作中进行 10 次迭代并根据需要播放它。

这是一个删除文件中所有剪贴蒙版的脚本。

也许如果您将 .remove 替换为 .release ,它将执行您想要的功能。

https://forums.adobe.com/thread/287643