[AI CS4-CS6] Как сжать (Scale) в скрипте?

keramer82

Участник
Топикстартер
Сообщения
52
Реакции
3
Доброго всем времени суток! Собственно почти весь вопрос в заголовке темы: как сжать (Scale) группу относительно центра в скрипте? Плюс еще нужно при этом каким-то образом указать Scale Corners = false; Scale Strokes & Effects; Transform Objects = true; Transform Patterns = true;
Пока сделал только это (правда не работает):
JavaScript:
function main () {
    //Выделить все
    app.executeMenuCommand("selectall");
    //Сгруппировать
    app.executeMenuCommand("group");
    //-------------------------------------------------
    //Сжать всю получившуюся группу на 50% по вертикали
    var obj_sel = app.activeDocument.selection;
    var m  = app.getScaleMatrix(100,50);
    obj_sel.getScaleMatrix(m); // как это сделать?
    //-------------------------------------------------
    redraw();
    }
main();
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
А зачем такие сложности, почему не resize? Во, даже видео нашел
 

keramer82

Участник
Топикстартер
Сообщения
52
Реакции
3
Мне нужно сжатие именно в процентах, это не для верстки дизайна, это для вывода форм, применяются некоторые коэффициенты сжатия, и необходимо делать именно так... (там будет не 50% в итоговом. 50 это для наглядности)
 

Gad

Сообщения
2 975
Реакции
1 408
это для вывода форм,
Рука-лицо конечно :)

относительно центра
Чего?
плюс еще нужно при этом каким-то образом указать Scale Corners = false; Scale Strokes & Effects; Transform Objects = true; Transform Patterns = true;
Записать экшн... не? :)
 

keramer82

Участник
Топикстартер
Сообщения
52
Реакции
3
Да... Видимо придется писать 25 action и потом скрипт, который запустит нужный, в зависимости от введенных данных. Причем, так, наверное, даже надежнее будет, чем скриптом чего-нибудь упустить при сжатии...
 
Последнее редактирование:

Gad

Сообщения
2 975
Реакции
1 408
А в CS6 такое можно вообще?
придется писать 25 action
Нет, вот пример
 
  • Спасибо
Реакции: keramer82

Jeine

Да здравствует разум! Да сгинет маразм!
15 лет на форуме
Сообщения
7 312
Реакции
6 317

Gadalka

R.I.P.
Сообщения
2 530
Реакции
868
При задании вопроса полностью -- может и касается.
 

keramer82

Участник
Топикстартер
Сообщения
52
Реакции
3
Затолкал я action в скрипт. Это было б идеальным решением, но не могу теперь его запустить, помогите, пожалуйста. Вот полный код скрипта вместе с action. Файл записывается, параметр scale в переменной, как нужно. Только не получается запустить.
JavaScript:
#target Illustrator
var scale = "50.0"; // задаем масштаб в процентах

if (app.activeDocument.artboards.length == 1) {
    action(scale);
    redraw();
};

function action(scale) {
    //redraw();
    var ActionString = [ '/version 3',
'/name [ 5',
'    5365742031',
']',
'/isOpen 0',
'/actionCount 1',
'/action-1 {',
'    /name [ 11',
'        4374726c415f4374726c47',
'    ]',
'    /keyIndex 4',
'    /colorIndex 0',
'    /isOpen 0',
'    /eventCount 3',
'    /event-1 {',
'        /useRulersIn1stQuadrant 0',
'        /internalName (adobe_selectAll)',
'        /localizedName [ 10',
'            53656c65637420416c6c',
'        ]',
'        /isOpen 0',
'        /isOn 1',
'        /hasDialog 0',
'        /parameterCount 0',
'    }',
'    /event-2 {',
'        /useRulersIn1stQuadrant 0',
'        /internalName (adobe_group)',
'        /localizedName [ 5',
'            47726f7570',
'        ]',
'        /isOpen 0',
'        /isOn 1',
'        /hasDialog 0',
'        /parameterCount 0',
'    }',
'    /event-3 {',
'        /useRulersIn1stQuadrant 0',
'        /internalName (ai_plugin_TransformEach)',
'        /localizedName [ 14',
'            5472616e73666f726d2045616368',
'        ]',
'        /isOpen 0',
'        /isOn 1',
'        /hasDialog 1',
'        /showDialog 0',
'        /parameterCount 13',
'        /parameter-1 {',
'            /key 1936224890',
'            /showInPalette -1',
'            /type (unit real)',
'            /value 100.0',
'            /unit 592474723',
'        }',
'        /parameter-2 {',
'            /key 1937142388',
'            /showInPalette -1',
'            /type (unit real)',
'            /value '+scale,
'            /unit 592474723',
'        }',
'        /parameter-3 {',
'            /key 1835561594',
'            /showInPalette -1',
'            /type (unit real)',
'            /value 0.0',
'            /unit 592476268',
'        }',
'        /parameter-4 {',
'            /key 1836479092',
'            /showInPalette -1',
'            /type (unit real)',
'            /value 0.0',
'            /unit 592476268',
'        }',
'        /parameter-5 {',
'            /key 1634625388',
'            /showInPalette -1',
'            /type (unit real)',
'            /value 0.0',
'            /unit 591490663',
'        }',
'        /parameter-6 {',
'            /key 1668247673',
'            /showInPalette -1',
'            /type (boolean)',
'            /value 0',
'        }',
'        /parameter-7 {',
'            /key 1919837293',
'            /showInPalette -1',
'            /type (boolean)',
'            /value 0',
'        }',
'        /parameter-8 {',
'            /key 1818848869',
'            /showInPalette -1',
'            /type (boolean)',
'            /value 0',
'        }',
'        /parameter-9 {',
'            /key 1868720756',
'            /showInPalette -1',
'            /type (boolean)',
'            /value 1',
'        }',
'        /parameter-10 {',
'            /key 1885434990',
'            /showInPalette -1',
'            /type (boolean)',
'            /value 1',
'        }',
'        /parameter-11 {',
'            /key 1919247980',
'            /showInPalette -1',
'            /type (boolean)',
'            /value 0',
'        }',
'        /parameter-12 {',
'            /key 1919247993',
'            /showInPalette -1',
'            /type (boolean)',
'            /value 0',
'        }',
'        /parameter-13 {',
'            /key 1885957744',
'            /showInPalette -1',
'            /type (enumerated)',
'            /name [ 6',
'                63656e746572',
'            ]',
'            /value 4',
'        }',
'    }',
'}'].join('\n');

    var f = new File('~/ScriptAction.aia');
    f.open('w');
    f.write(ActionString);
    f.close();
    app.doScript("ScaledSelected", "ScriptAction");
    ActionString = null;
};
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Мне нужно сжатие именно в процентах, это не для верстки дизайна, это для вывода форм, применяются некоторые коэффициенты сжатия, и необходимо делать именно так... (там будет не 50% в итого
А что мешает в resize размеры в процентах задать?
Я чего то недопонимаю?
 

Dmitriy

20 лет на форуме
Сообщения
389
Реакции
203
Я так понимаю это для флексы, дисторсию так задаете?
Если так то, что у вас за формы (толщина) и везде ли толщина форм одинаковая?
Просто у нас например для форм 1,14 мм на всех валах идет сжатие на 6,032 мм. Не легче ли вам отсюда плясать?
 

keramer82

Участник
Топикстартер
Сообщения
52
Реакции
3
У нас это сжатие применяется на разные валы (длина окружности). Вот и хочется поудобнее сделать, чтоб задавать не коэффициент, а просто размер вала, а скрипт уже сам бы определял на сколько сжатие. А то доступных размеров валов 25 шт.
 
Последнее редактирование:

Chiga

15 лет на форуме
Сообщения
802
Реакции
519
Мне нужно сжатие именно в процентах, это не для верстки дизайна
Если флекса узкорулонка, рекомендую линковать "изделие", применять к нему коэффициент дисторсии и потом раскладывать, группировать ничего не нужно и производительность вырастет. Но при этом есть риски поиметь косяки при записи ps/pdf, связанные с рассогласованием профилей в линках и настройкой CMS иллюстратора.
Советую сразу делать это в Индизайне, он больше подходит для этих целей.
 

keramer82

Участник
Топикстартер
Сообщения
52
Реакции
3
Уфф... Разобрался в чем была проблема. Оказывается нужно было в самом action сделать создание set и action, который и юзать. А я просто делал action и пытался его задействовать. Сейчас вроде все нормально делает, осталось пару проверок прикрутить.
 
Последнее редактирование:

Dmitriy

20 лет на форуме
Сообщения
389
Реакции
203
Да на эту тему уже много разговоров было, в чистой теории да на каждый вал своя дисторсия должна быть. Но почему то вариант с 6,032 вполне работает, видел уже не в одной конторе.
 

Gad

Сообщения
2 975
Реакции
1 408
Последнее редактирование:

keramer82

Участник
Топикстартер
Сообщения
52
Реакции
3
Да относительно центра группы, в которую входят все элементы со всех слоев. Но в этом конкретном случае это будет и центр артборда тоже.