Muchacho wrote:
> И ещё, нужно ли скриптом автоматически удалять неиспользуемые
> сватчи?
есть же собственное илловское средство. правда, оно зависит от использования этих цветов в кистях и стилях.
так что я, например, просто сделал себе экшен, который одним нажатием весь этот мусор из чужих документов "в трэш" вытряхивает. )) в моих-то документах всего этого изначально нет - подправлен CMYK startup, - да как и у многих здесь, наверное.
а вот именование свочей по индизовскому типу - рулит. только может возникнуть вопрос с апдейтом имени после корректировки цвета своча. это реально - скриптом?
> И ещё, нужно ли скриптом автоматически удалять неиспользуемые
> сватчи?
есть же собственное илловское средство. правда, оно зависит от использования этих цветов в кистях и стилях.
так что я, например, просто сделал себе экшен, который одним нажатием весь этот мусор из чужих документов "в трэш" вытряхивает. )) в моих-то документах всего этого изначально нет - подправлен CMYK startup, - да как и у многих здесь, наверное.
а вот именование свочей по индизовскому типу - рулит. только может возникнуть вопрос с апдейтом имени после корректировки цвета своча. это реально - скриптом?
Попробуйте вот эту штучку. Сразу говорю, что на слабых компьютерах илл может на некоторое время призадуматься (особенно, если в файле много текста), т.к. кроме прочего, проверяется и цвет каждого слова в текстовых объектах. Вешчь эта пока не обкатанная, так что, обо всех пожеланиях и жалобах сообщайте.
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.filled){
zapArray(obj.fillColor);
}
if(obj.stroked){
zapArray(obj.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{
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){
if ((sw.name==currSw.name)&&(sw.color.color!=4)){
currSw.remove();
q--
}
}
}
}
}else{}
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.filled){
zapArray(obj.fillColor);
}
if(obj.stroked){
zapArray(obj.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{
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){
if ((sw.name==currSw.name)&&(sw.color.color!=4)){
currSw.remove();
q--
}
}
}
}
}else{}
Paavels wrote:
>
> was is das?
> an internal error occurred: PARM
> Line: 120
> ->
> скипт супер!
> СПАСИБО!
Действительно, была такая мулька
Ну теперь я, вроде как от неё "защитился"
Вот немного доделанный скрипт, т.к. сказать, версия 1.1
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.filled){
zapArray(obj.fillColor);
}
if(obj.stroked){
zapArray(obj.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{
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{}
>
> was is das?
> an internal error occurred: PARM
> Line: 120
> ->
> скипт супер!
> СПАСИБО!
Действительно, была такая мулька
Ну теперь я, вроде как от неё "защитился"
Вот немного доделанный скрипт, т.к. сказать, версия 1.1
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.filled){
zapArray(obj.fillColor);
}
if(obj.stroked){
zapArray(obj.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{
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{}
Да, скрипт полезный, ничего не скажешь.
Одно пожелание есть. Мне кажется, что формат записи цвета не очень удобочитаемый: C=50 M=0 Y=23 K=65. Много лишних символов. Не лучше было бы так: 50-0-23-65? Воспринимается легче, одним взглядом. В принципе, это, наверное, многие могут подправить в скрипте, но ведь не все. Как думаете?
Вместо:
nam='C='+round(col1.cyan)+' '+'M='+round(col1.magenta)+' '+'Y='+round(col1.yellow)+' '+'K='+round(col1.black);
так:
nam='round(col1.cyan)+'-'+'round(col1.magenta)+'-'+round(col1.yellow)+'-'+round(col1.black);
ну, и с RGB аналогично...
правильно я понимаю? ))
Одно пожелание есть. Мне кажется, что формат записи цвета не очень удобочитаемый: C=50 M=0 Y=23 K=65. Много лишних символов. Не лучше было бы так: 50-0-23-65? Воспринимается легче, одним взглядом. В принципе, это, наверное, многие могут подправить в скрипте, но ведь не все. Как думаете?
Вместо:
nam='C='+round(col1.cyan)+' '+'M='+round(col1.magenta)+' '+'Y='+round(col1.yellow)+' '+'K='+round(col1.black);
так:
nam='round(col1.cyan)+'-'+'round(col1.magenta)+'-'+round(col1.yellow)+'-'+round(col1.black);
ну, и с RGB аналогично...
правильно я понимаю? ))