2016-01-28 44 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

相關問題