[AI CC-CC2022] Увеличить обект на N миллиметров (не пропорционально)

  • Автор темы Автор темы maskines
  • Дата начала Дата начала

maskines

Участник
Топикстартер
Сообщения
11
Реакции
0
Здравствуйте. Очень нужен скрипт, вроде бы ужасно простой, но я, к сожалению, их совсем не умею писать. Форум почитал, похожего не нашел. Может кто-нибудь пособит.

AI CC2018
Суть: После выделения фона (ручками), который всегда равен борду:
1. прибавить к размеру 24мм по ширине и длине, не пропорционально.
2. подогнать борд под новый размер (хотя это можно и биндом)

Есть пример аналогичного скрипта для фотошопа:
JavaScript:
myDoc=app.activeDocument;
myWidth=myDoc.width;
myWidth.convert("mm");

myHeight=myDoc.height;
myHeight.convert("mm");

myDoc.resizeImage(myWidth+UnitValue("24 mm"),myHeight+UnitValue("24 mm"),myDoc.resolution);

Спасибо за ваше внимание С:
 
Вам именно скрипт? Штатными средствами не устроит?
 
Как в фотошопе не выйдет, вам нужен этот метод
1548057197866.png

И прибавлять придется не UnitValue а значение в поинтах (1/72 дюйма)
Причем, обратите внимание - scale задается вообще в процентах так что сперва придется их посчитать
 
Вам именно скрипт? Штатными средствами не устроит?
Штатными средствами это..? Action? Его я пробовал, он увеличивает до а не на заданный размер. Т.е если записывать action где размер был 1000мм +24мм=1024мм и все последующие объекты он будет делать 1024, а не просто прибавлять 24мм.
Как в фотошопе не выйдет, вам нужен этот метод
Посмотреть вложение 115025
И прибавлять придется не UnitValue а значение в поинтах (1/72 дюйма)
Причем, обратите внимание - scale задается вообще в процентах так что сперва придется их посчитать
С процентами как раз вся и проблема. Много макетов, все абсолютно разных размеров, т.е нельзя их увеличивать на 3-5-10%. К ним независимо от размера нужно прибавлять строго определенные 24мм на каждую сторону.
 
С процентами как раз вся и проблема. Много макетов, все абсолютно разных размеров, т.е нельзя их увеличивать на 3-5-10%.
Ну чтото типа такого будет
JavaScript:
var oldsize=app.activeDocument.selection[0].width;
var scale=oldsize/(oldsize + 24/25.4*72);
app.activeDocument.selection[0].resize(scale,scale);
 
Ну чтото типа такого будет
JavaScript:
var oldsize=app.activeDocument.selection[0].width;
var scale=oldsize/(oldsize + 24/25.4*72);
app.activeDocument.selection[0].resize(scale,scale);
Объект размером 1400х3740мм превратился в 14х37мм.. т.е уменьшился в 100 раз :o|)
 
Код:
var oldsize=app.activeDocument.selection[0].width;
var scale=oldsize/(oldsize + 24/25.4*72)*100;
app.activeDocument.selection[0].resize(scale,scale);
 
Код:
var oldsize=app.activeDocument.selection[0].width;
var scale=oldsize/(oldsize + 24/25.4*72)*100;
app.activeDocument.selection[0].resize(scale,scale);
Потестировал. Все грустно) Я так понимаю он (скрипт) берет ширину, высчитывает от нее процент и уменьшает обе стороны на полученные мм. В итоге макеты с неравными сторонами уменьшаются на тем более различные размеры, чем дальше они от квадрата, потому как квадраты уменьшает поровну, но всегда по разному в зависимости от размера в пределах 20-23мм. При чем да, они уменьшаются, а не увеличиваются)
Скажите, быть может есть способы увеличить стороны на конкретное количество мм, а не просчитывать исходя из процента?
 
Ну я на коленке делаю, проверять некогда, вообще то предполагалось, что я вам удочку даю а не рыбу
Вот так попробуйте
Код:
var oldsize=app.activeDocument.selection[0].width;
var scale=(oldsize + 24/25.4*72)/oldsize*100;
app.activeDocument.selection[0].resize(scale,scale);
 
Ну я на коленке делаю, проверять некогда, вообще то предполагалось, что я вам удочку даю а не рыбу
Вот так попробуйте
Код:
var oldsize=app.activeDocument.selection[0].width;
var scale=(oldsize + 24/25.4*72)/oldsize*100;
app.activeDocument.selection[0].resize(scale,scale);
Хотя если с обеих сторон непропорционально то пожалуй так
JavaScript:
var oldsizeX=app.activeDocument.selection[0].width;
var oldsizeY=app.activeDocument.selection[0].height;
var scaleX=(oldsizeX + 24/25.4*72)/oldsizeX*100;
var scaleY=(oldsizeY + 24/25.4*72)/oldsizeY*100;
app.activeDocument.selection[0].resize(scaleX,scaleY);
 
  • Спасибо
Реакции: maskines и ~RA~
Хотя если с обеих сторон непропорционально то пожалуй так
JavaScript:
var oldsizeX=app.activeDocument.selection[0].width;
var oldsizeY=app.activeDocument.selection[0].height;
var scaleX=(oldsizeX + 24/25.4*72)/oldsizeX*100;
var scaleY=(oldsizeY + 24/25.4*72)/oldsizeY*100;
app.activeDocument.selection[0].resize(scaleX,scaleY);

Конечно же я понимаю, что мы говорили об удочке.. однако удочка не намекает совсем на решение конкретно моей задачи. Для меня оказалось неожиданностью, что какой-нибудь [oldsize+24mm] выглядит как [oldsizeX + 24/25.4*72)/oldsizeX*100] и, как следствие, размеры прыгают на +\-5мм :o|
Видимо так устроена жизнь)) Благодарю за помощь.
В итоге написал костыль в ahk, вроде помог))
Если кому пригодится — наздоровье.
Код:
#z::
    ;клик в ширину
Send {Click 319, 238}
Send {End}
send {NumpadAdd}24{Tab}
Send {End}
send {NumpadAdd}24{Enter}
    ;артборд
send ^+Q

return
 
Конечно же я понимаю, что мы говорили об удочке.. однако удочка не намекает совсем на решение конкретно моей задачи.

Не по теме:
@_MBK_ прекращал бы ты бесплатно делать работу за других.
 
размеры прыгают на +\-5мм
?
Я конечно рад что вы на AHK костыль написали, но по идее правильнее было бы со штатной автоматизацией разобраться
Размеры прыгать не должны если все правильно сделать
 
Странно, сейчас у себя проверил - все четко увеличивает ровно на 24 мм до самых мелких долей
А на AHK, наоборот, вижу сильную проблему - каким волшебным образом эдитбокс выбора ширины поставить в позицию
319, 238 на экране? %8 По идее (если он вообще на экране есть) то его как то по классу окна и CID искать надо, но это геморрой просто невероятный
Вдобавок, конечная цель действия не ясна - просто одному объекту размер поменять проще руками, чем так изгаляться 'hmmm'
 
Так ведь свойства width и height можно менять напрямую
Код:
app.activeDocument.selection[0].width += 24*72/25.4;
app.activeDocument.selection[0].height += 24*72/25.4;
 
Ну, можно конечно, но по уму лучше через ресайз - вдруг потом захочется отличных от умолчательных параметров преобразования заливок/обводок?
 
  • Спасибо
Реакции: YemZ