2014-11-05 1 views
0

Я пытаюсь покрасить pathItems в пределах compoundPathItem в Illustrator. Мой объект выглядит как круг внутри круга. Нет штрихов, четыре пути, два compoundPathItems в пределах compoundPathItem.Как окрасить вложенные составные пути Extendscript для Illustrator CS5?

Когда я отладки с этой строки: предупреждения (doc.compoundPathItems [0]) I get:-[CompoundPathItem] .... which makes sense because I've combined two compoundPathItems.

Однако, я не могу показаться, чтобы получить доступ к pathItems для того, чтобы окрасить их:

doc.compoundPathItems[0].compoundPathItems[0].pathItems ... errors out x_x ... 
alert(doc.compoundPathItems[0].pathItems.length) gives me 0 .... T-T 

Помощь я понимаю, что здесь происходит, пожалуйста.

ответ

0

- это объект, как обозначенная буква «O»? или «◎»> два составных элемента внутри соединенияPathItem

Я думаю, что любой path_item составного_каталога, покрашенного последним, заполняет родительский объект цвета (= составной_path_item).

если буква «O», попробуйте ниже

#target "Illustrator" 
var doc = app.documents[0]; 
var co_pathitem = doc.compoundPathItems[0].pathItems; 

// create colors 
var color1 = new RGBColor(); 
color1.red = 255; 

var color2 = new RGBColor(); 
color2.blue = 255; 

// fillcolor red 
co_pathitem[0].filled = true; 
co_pathitem[0].fillColor = color1; 
$.writeln(co_pathitem[0].fillColor.properties()); // => color1 

// fillcolor blue 
co_pathitem[1].filled = true; 
co_pathitem[1].fillColor = color2; 
$.writeln(co_pathitem[1].fillColor.properties()); // => color2 

// => doc.compoundPathItems[0] will be colored with color2(colored at last) 

// but pathItems[0] filled with color1 yet 
$.writeln(co_pathitem[0].fillColor.properties()); // => color1 

Object.prototype.properties = function (cr) { 
    var self = this; 
    var cr = cr || ", "; 
    var props = []; 
    for (var i in self) { 
    try { 
     props.push(i + ":" + self[i]); 
    } catch (e) { 
     // props.push(i + ":" + e); 
    } 
    }; 
    return props.join(cr); 
} 
+0

Нет, извините .. форма похожа на вторую, которую вы сказали «◎», –

0

этот код Этот скрипт будет работать, если все pageItems являются compoundItems, app.activeDocument.pathItems даст все pathItems в документе. Он также будет вложен в compoundPathItem. Поэтому попробуйте, если это сработает для вас

var currentDocument = app.activeDocument; 
var pathItems = currentDocument.pathItems; 
var redSwatch = currentDocument.swatches.getByName('CMYK Red'); 
var blueSwatch = currentDocument.swatches.getByName('CMYK Blue'); 
for (var i = 0; i < pathItems.length; i++) { 
    pathItems[i].filled = true; 
    pathItems[i].fillColor = redSwatch.color; 
    pathItems[i].stroked = true; 
    pathItems[i].strokeColor = blueSwatch.color; 
}