如何使用javascript选择和删除Illustrator文档中的每个剪辑遮罩?

如何使用javascript选择和删除Illustrator文档中的每个剪辑遮罩?,javascript,optimization,adobe-illustrator,extendscript,Javascript,Optimization,Adobe Illustrator,Extendscript,我正在为AdobeIllustratorCS6(javascript)制作扩展脚本,我需要删除文档的每个剪辑掩码 我已经有了一个解决方案,但在大型文档中速度不够快 这是我的密码: var releaseClippingMasks = function(document) { var pathItems = document.pathItems; log('Looking for clipping masks among ' + pathItems.length + ' elements

我正在为AdobeIllustratorCS6(javascript)制作扩展脚本,我需要删除文档的每个剪辑掩码

我已经有了一个解决方案,但在大型文档中速度不够快

这是我的密码:

var releaseClippingMasks = function(document)  {
  var pathItems = document.pathItems;
  log('Looking for clipping masks among ' + pathItems.length + ' elements');
  var n = 0;
  for(var p = pathItems.length - 1; p >= 0; p--) {
    if(p / 1000 == Math.round(p / 1000)) {
        log(p + ' remaining');
    }

    if(pathItems[p].clipping) { // accessing to the element [p] of pathItems takes a lot of time
        pathItems[p].remove();
        n++;
    }
  }
  log(n + ' deleted masks');
}
我的文档中没有那么多剪辑遮罩,但是有很多pathItems(100000+),因此迭代需要很长时间

有人知道用javascript选择文档中每个剪辑掩码的更好方法吗?
非常感谢您的帮助。

选择并删除所有剪辑遮罩的最快方法:

// Select->Objects->Clipping Mask
app.executeMenuCommand("Clipping Masks menu item"); 
// Edit->Clear
app.executeMenuCommand("clear"); 

选择并删除所有剪辑遮罩的最快方法:

// Select->Objects->Clipping Mask
app.executeMenuCommand("Clipping Masks menu item"); 
// Edit->Clear
app.executeMenuCommand("clear"); 

everyItem().getElements()
是否在Illustrator环境中工作?对于InDesign,这经常用于将活动集合“分离”到单独的数组中,因此访问单个项目的速度会快得多。你已经指出这是一个可能的候选。在Illustrator环境中没有这样的功能。我刚试过InDesign,也没找到。无论如何,如果我们设法获取数组中的每个元素,则应在每个元素上进行迭代,以找到具有剪裁遮罩的元素。
everyItem().getElements()
在Illustrator环境中工作吗?对于InDesign,这经常用于将活动集合“分离”到单独的数组中,因此访问单个项目的速度会快得多。你已经指出这是一个可能的候选。在Illustrator环境中没有这样的功能。我刚试过InDesign,也没找到。无论如何,如果我们设法得到一个数组中的每个元素,应该对每个元素进行一次迭代,以找到那些具有剪切掩码的元素。确实非常快!谢谢,非常简单,效果非常好。非常感谢。真是太快了!谢谢,非常简单,效果非常好。非常感谢。