Illustrator ExtendScript隐藏路径

时间:2015-01-28 15:01:18

标签: javascript adobe-illustrator extendscript

我正在尝试编写一个脚本(因为我无法找到一个有效的脚本),它会将我所有单独的图层,路径等导出到透明的png文件中。我见过很多脚本,但是它们都不会导出所有图层等等。它们似乎只是尝试导出父图层。因此,如果存在子图层,则会遗漏这些图层。

这是我的剧本:

var doc = app.activeDocument;
var counter = 0;

hideOrShowItems(doc, false);
// processLayers(doc);
// displayLayer(doc, true);

function hideOrShowItems(root, show) {
    for(var i = 0; i < root.layers.length; i++) {
        var layer = root.layers[i];
        var pathCount = layer.pathItems.length;
        var layerCount = layer.layers.length;

        if (pathCount > 0) {
            hideOrShowPaths(layer, show);
        }

        if (layerCount > 0) {
            hideOrShowItems(layer, show);
        }

        layer.visible = show;
    }
}

function hideOrShowPaths(root, show) {
    for(var i = 0; i < root.pathItems.length; i++) {
        root.pathItems[i].visible = show;
    }
}

// -- Removed for brievety

当我运行脚本时,唯一隐藏的是顶层

enter image description here

所有其他都没有动过。 我在 hideOrShowPaths 的for循环中放了一个计数器并执行 counter ++ ,它计数246,所以我知道它可以看到路径并且实际上是试图隐藏它们,但是它们保持可见。

以前有人这样做过吗?我可以隐藏路径,组,剪辑并将它们全部导出为pngs吗?或者我必须手动完成这个吗?

1 个答案:

答案 0 :(得分:3)

您要查找的标记看起来是hidden而不是visible

var doc = app.activeDocument;
var root = doc.layers[0];
// just for testing purpose. Change the color
var newRGBColor = new RGBColor();
newRGBColor.red = 255;
newRGBColor.green = 255;
newRGBColor.blue = 255;
// make all items hidden
for (var i = 0; i < root.pathItems.length; i++) {
  var item = root.pathItems[i];
  item.hidden = true;
  item.fillColor = newRGBColor; // just for testing
}
// now loop all pathItems
for (var i = 0; i < root.pathItems.length; i++) {
  var item = root.pathItems[i];
  item.hidden = !item.hidden; //make one visible
  // export visible part
  redraw();
  item.hidden = !item.hidden; // hide it again
}

在您的脚本中,您需要先隐藏所有项目,然后取消隐藏其中一项,再次导出并隐藏它。 我希望片段有助于解决您的问题