Render.ru

Используемые цвета

#21
Пока не натыкался на такой эфект. Можешь описать в каких случаях он появляется, или выслать файл в котором это происходит?
 
#23
Спасибо, Shlyapa и Paavels.
Действительно глюк, при чём, виной тут какие-то внутренние ошибки интерпритатора в Илле. Сейчас парюсь как обойти эту фигню.
 
#24
Вряд ли это ошибка интерпритатора.

Тот же самый объект, что ятебе прислал, крашенный в другие цвета (и вообще в другом макете) обрабатывается нормально.

Ошибка алгоритма, я так думаю.
 
#26
Пока я вижу закономерность, ошибки связаны с некоторыми Compound Path, окрашенными в градиент.
 
#27
> с некоторыми Compound Path, окрашенными в градиент.

Именно.
Но почему один и тот же объект в разных макетах себя по-разному ведёт?
Объект один, градиент один, только цвет его другой.

Кстати, провёл эксперимент:

Взял объект, который красится скриптом в чёрный, изменил цвета градиента, запустил скрипт — и всё ОК.
Изменил цвета ещё раз (на другие, случайные) — глюк на лицо.

Словом, зависимость от цвета на лицо. Но какая?
 
#28
Частично проблему уже решил, думаю, доделанный скрипт будет завтра, т.к. сеть у меня в это время отрубают. Бай!
 
#30
//Версия 1.2 :)
function zapArray(col){
with (Math){
nam=false;
switch(col.color){
case 1:
col1=col.cmyk;
nam='C='+round(col1.cyan)+' '+'M='+round(col1.magenta)+' '+'Y='+round(col1.yellow)+' '+'K='+round(col1.black);
break;
case 2:
col1=col.gray;
nam='Gray='+round(col1.gray);
break;
case 3:
col1=col.rgb;
nam='R='+round(col1.red)+' '+'G='+round(col1.green)+' '+'B='+round(col1.blue);
break;
case 4:
col1=col.spot;
nam=col1.spot.name;
break;
case 5:
col1=col.pattern;
break;
case 6:
col1=col.gradient;
break;
}
sovpad=false;

for(q=0;q<mySw.length;q++){
try{
if(col.color==mySw[q].color.color){
switch(col.color){
case 1:
myCo=mySw[q].color.cmyk;
c=col.cmyk;
if((round(c.cyan)==round(myCo.cyan))&&(round(c.magenta)==round(myCo.magenta))&&(round(c.yellow)==round(myCo.yellow))&&(round(c.black)==round(myCo.black))){
sovpad=true
}
break;
case 2:
myCo=mySw[q].color.gray;
c=col.gray;
if(round(c.gray)==round(myCo.gray)){
sovpad=true
}
break;
case 3:
myCo=mySw[q].color.rgb;
c=col.rgb;
if((round(c.red)==round(myCo.red))&&(round(c.green)==round(myCo.green))&&(round(c.blue)==round(myCo.blue))){
sovpad=true
}
break;
case 4:
myCo=mySw[q].color.spot;
c=col.spot;
if((c.spot==myCo.spot)&&(round(c.tint)==round(myCo.tint))){
sovpad=true
}
break;
case 5:
myCo=mySw[q].color.pattern;
c=col.pattern;
if(c.pattern==myCo.pattern){
sovpad=true
}
break;
case 6:
myCo=mySw[q].color.gradient;
c=col.gradient;
if(c.gradient==myCo.gradient){
sovpad=true
}
break;
}
}
}catch(exc){
continue}
}
if(!sovpad){
newSw=mySw.add();
newSw.color=col;
if(nam){
newSw.name=nam
}
}
}
};

function between(obj){
if(obj.typename=='CompoundPathItem'){
objBetween=obj.pathItems[0]
}else{
objBetween=obj
}
if(objBetween.filled){
zapArray(objBetween.fillColor);
}
if(objBetween.stroked){
zapArray(objBetween.strokeColor);
}
};

pgItems = activeDocument.pageItems;
if (pgItems.length>0){
mySw=activeDocument.swatches;
for(i=0;i<pgItems.length;i++){
if(pgItems.typename=='TextArtItem'){
textR=pgItems.textRange();
wor=textR.words;
for(a=0;a<wor.length;a++){
between(wor[a])
}
}else if(pgItems.typename=='CompoundPathItem'){
obj=pgItems;
between(obj);
i+=obj.pathItems.length;
}else{
if(obj.parent.typename!='CompoundPathItem'){
obj=pgItems;
between(obj)
}
}
}
for(i=2;i<mySw.length;i++){
sw=mySw;
for(q=2;q<mySw.length;q++){
currSw=mySw[q];
if(i!=q){
try{
if ((sw.name==currSw.name)&&(sw.color.color!=4)){
currSw.remove();
q--
}
}catch(exc){
continue
}
}
}
}
}else{}
 
#33
Блин, поспешил вчера закинуть скрипт до 10:00, и закинул недоделанную гадость с пропущенными парой строк кода. Теперь вот доделал вроде. Сразу говорю из каких объектов скрипт в принципе не может получть цвет (что б это не считали за глюк):
Объекты, созданные плагинами;
Sumbol Set, Compound Shape(это, по сути, тоже объекты, созданные плагинами);
Объекты, содержащиеся внутри символов и кистей
Отдельные символы в тексте (мог бы, но скрипт бы долго думал)
Дополнительные заливки и контуры объектов.

//Итак, версия 1.3
function zapArray(col){
with (Math){
nam=false;
switch(col.color){
case 1:
col1=col.cmyk;
nam='C='+round(col1.cyan)+' '+'M='+round(col1.magenta)+' '+'Y='+round(col1.yellow)+' '+'K='+round(col1.black);
break;
case 2:
col1=col.gray;
nam='Gray='+round(col1.gray);
break;
case 3:
col1=col.rgb;
nam='R='+round(col1.red)+' '+'G='+round(col1.green)+' '+'B='+round(col1.blue);
break;
case 4:
col1=col.spot;
nam=col1.spot.name;
break;
case 5:
col1=col.pattern;
break;
case 6:
col1=col.gradient;
break;
}
sovpad=false;

for(q=0;q<mySw.length;q++){
try{
if(col.color==mySw[q].color.color){
switch(col.color){
case 1:
myCo=mySw[q].color.cmyk;
c=col.cmyk;
if((round(c.cyan)==round(myCo.cyan))&&(round(c.magenta)==round(myCo.magenta))&&(round(c.yellow)==round(myCo.yellow))&&(round(c.black)==round(myCo.black))){
sovpad=true
}
break;
case 2:
myCo=mySw[q].color.gray;
c=col.gray;
if(round(c.gray)==round(myCo.gray)){
sovpad=true
}
break;
case 3:
myCo=mySw[q].color.rgb;
c=col.rgb;
if((round(c.red)==round(myCo.red))&&(round(c.green)==round(myCo.green))&&(round(c.blue)==round(myCo.blue))){
sovpad=true
}
break;
case 4:
myCo=mySw[q].color.spot;
c=col.spot;
if((c.spot==myCo.spot)&&(round(c.tint)==round(myCo.tint))){
sovpad=true
}
break;
case 5:
myCo=mySw[q].color.pattern;
c=col.pattern;
if(c.pattern==myCo.pattern){
sovpad=true
}
break;
case 6:
myCo=mySw[q].color.gradient;
c=col.gradient;
if(c.gradient==myCo.gradient){
sovpad=true
}
break;
}
}
}catch(exc){
continue}
}
if(!sovpad){
newSw=mySw.add();
newSw.color=col;
if(nam){
newSw.name=nam
}
}
}
};

function between(obj){
if(obj.typename=='CompoundPathItem'){
objBetween=obj.pathItems[0]
}else{
objBetween=obj
}
if(objBetween.filled){
zapArray(objBetween.fillColor);
}
if(objBetween.stroked){
zapArray(objBetween.strokeColor);
}
};

function notParentCompound(obj){
notCompound=false;
if(obj.parent.typename=='Layer'){
notCompound=true;
}else if(obj.parent.typename=='GroupItem'){
notParentCompound(obj.parent)
}
return notCompound
}

pgItems = activeDocument.pageItems;
if (pgItems.length>0){
mySw=activeDocument.swatches;
for(i=0;i<pgItems.length;i++){
if(pgItems.typename=='TextArtItem'){
textR=pgItems.textRange();
wor=textR.words;
for(a=0;a<wor.length;a++){
between(wor[a])
}
}else if(pgItems.typename=='CompoundPathItem'){
obj=pgItems;
between(obj);
i+=obj.pathItems.length;
}else{
if(notParentCompound(pgItems)){
obj=pgItems;
between(obj)
}
}
}
for(i=2;i<mySw.length;i++){
sw=mySw;
for(q=2;q<mySw.length;q++){
currSw=mySw[q];
if(i!=q){
try{
if ((sw.name==currSw.name)&&(sw.color.color!=4)){
currSw.remove();
q--
}
}catch(exc){
continue
}
}
}
}
}else{}
 
Сверху