Тут есть еще одна маленькая тонкость. У каждого объекта PathItem есть свойства filled и stroked, указывающие соответственно, залит или обведен объект. Сказать по правде, весьма странно, что простое назначение цвета без установки свойства filled заливает незалитый объект цветом. Но, возможно, это выход? Попробуйте перед переназначинем цвета делать filled=true, а в конце вместо назначения нулевой обводки stroked=false. Чем черти не шутят, может это тоже ускорит?Ага, по-видимому Илл-р работает на порядки (именно на порядки!!!) быстрее, когда в скриптах старый цвет заливки
переназначает на новый, нежели когда объекту без заливки присваивает заливку определенного цвета в цикле.
Так что идея в том чтобы перед прогоном моего скрипта залить все объекты любой заливкой одинаковой.
В том же скрипте, если возможности скриптинга позволяют без запуска цикла назначить всем выделенным объектам заливку, ну и заодно нулевую толщину обводки.
Если нет, то проще и быстрее вручную будет перекрашивать все белой заливкой, не трогая обводку, перед запуском скрипта. Главное не забывать
docSelected[i].filled=true;
docSelected.filled=true;
Так что проблема решена, победителям выдан похвальный лист?поместил внутрь цикла перед перекраской и теперь за 2,2 минуты с незалитыми объектами скрипт отработал.
И не должно, filled - свойство некоторых элементов массива, а не всего массива. Вам бы матчасть подтянуть действительноперед циклом, но так ничего не вышло..
docSelected = app.activeDocument.selection;
if ( docSelected.length > 0 ) {
for ( i = 0; i < docSelected.length; i++ ) {
docSelected[i].filled=true;
docSelected[i].fillColor = docSelected[i].strokeColor;
docSelected[i].strokeWidth = 0;
}
}
else {
alert( "Please select one or more objects" );
}
docSelected = app.activeDocument.selection;
if ( docSelected.length > 0 ) {
for ( i = 0; i < docSelected.length; i++ )
with (docSelected[i])
{
filled=true;
fillColor = strokeColor;
strokeWidth = 0;
}
}
else {
alert( "Please select one or more objects" );
}
Странно. А так:немного дольше - на 0,4 минуты
docSelected = app.activeDocument.selection;
if ( docSelected.length > 0 ) {
for ( i = 0; i < docSelected.length; i++ )
{ var ds=docSelected[i];
ds.filled=true;
ds.fillColor = ds.strokeColor;
ds.strokeWidth = 0;
}
}
else {
alert( "Please select one or more objects" );
}
Еще не потолокэто потолок
@JSXBIN@ES@2.0@MyBbyBn0ACJAnABjzLjEjPjDiTjFjMjFjDjUjFjEBfXzJjTjFjMjFjDjUjJjPjOCf
XzOjBjDjUjJjWjFiEjPjDjVjNjFjOjUDfjzDjBjQjQEfnfOBbyCn0ABaCbEn0AEJEnASzCjEjTFyBQz
AGfjBfjzBjJHfnftJFnABXzGjGjJjMjMjFjEIfVFfyBnctfJGnABXzJjGjJjMjMiDjPjMjPjSJfVFfy
BXzLjTjUjSjPjLjFiDjPjMjPjSKfVFfyBnfJHnABXzLjTjUjSjPjLjFiXjJjEjUjILfVFfyBndAfAjH
fAXzGjMjFjOjHjUjIMfjBfByBzBhcNACzBheOXMfjBfnndAbyLn0ABJLnAEjzFjBjMjFjSjUPfRBFeh
BiQjMjFjBjTjFhAjTjFjMjFjDjUhAjPjOjFhAjPjShAjNjPjSjFhAjPjCjKjFjDjUjTffABF40BiAAB
AGByB