如何使用javascript选择和删除Illustrator文档中的每个剪辑遮罩?
我正在为AdobeIllustratorCS6(javascript)制作扩展脚本,我需要删除文档的每个剪辑掩码 我已经有了一个解决方案,但在大型文档中速度不够快 这是我的密码:如何使用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
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,也没找到。无论如何,如果我们设法得到一个数组中的每个元素,应该对每个元素进行一次迭代,以找到那些具有剪切掩码的元素。确实非常快!谢谢,非常简单,效果非常好。非常感谢。真是太快了!谢谢,非常简单,效果非常好。非常感谢。