2016-05-25 3 views
0

Я хочу, чтобы удалить переопределение из основных элементов, но только элементы в стиле объекта X, я писал:InDesign - удалить мастер-элементы переопределения использование селекторов

var doc = app.activeDocument; 
var pgs = doc.pages; 
for(i = 0; i<pgs.length; i++){ 
    pgs[i].removeOverride(doc.objectStyles.itemByName("myObject")) 
} 

И все переопределяет удалены. как я это делаю? Спасибо заранее

ответ

2

Это правда, не очень хорошо документированы в InDesign модели объектов, но с использованием removeOverride() на странице (как вы делаете) просто удаляет все переопределение из всех pageItems на том, что стр. Кроме того, removeOverride() не принимает никаких аргументов. Вместо того, чтобы вы могли использовать его как это:

var pi = app.activeDocument.pageItems; 
var myOS = app.activeDocument.objectStyles.item('myObject'); 
for(var i = 0; i < pageItems.length; i += 1) { 
    if(pi[i].appliedObjectStyle === myOS) page[i].removeOverride(); 
} 

Это перебирает все pageItems, проверяет каждый, если он имеет objectStyle и если да удаляет переопределение.

+0

большое спасибо, мне так помогают – ABE

0

var main = function() { 
 
var doc = app.properties.activeDocument, 
 
pis, pi; 
 
if(!doc) return; 
 
pis = doc.pageItems, 
 
n = pis.length; 
 
while (n--) pis[n].overridden && pis[n].appliedObjectStyle.name=="myObject" && pis[n].removeOverride(); 
 
}; 
 

 
main();

+1

Я предполагаю, что вы хотели написать '' 'removeOverride()' '' вместо '' 'remove()' '', потому что тогда это сработает. – mdomino

+1

Вы правы. Я изменил код. – Loic