2016-01-28 46 views
1

我正在为Adobe Illustrator CS6制作扩展脚本(javascript),我需要删除文档的每个剪贴蒙版。如何使用javascript在Illustrator文档中选择和删除每个剪贴蒙版?

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

这里是我的代码:

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中的每个剪贴蒙版在文档中? 任何帮助将不胜感激。

+1

是否在你的插画环境'everyItem()的getElements()'的作品吗?对于InDesign,这经常用于将实时集合“分离”到单独的阵列中,因此访问单个项目可以更快。你已经指出这可能是一个候选人。 – usr2564301

+0

在Illustrator环境中没有这样的功能。我刚刚尝试使用InDesign,但我也没有找到它。无论如何,如果我们设法获得数组中的每个元素,则应该对每个元素进行迭代以找到具有剪切蒙版的人。 – superrache

回答

1

选择所有剪贴蒙版,并删除它的最快方法:

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

的确很快!非常感谢 – superrache