[AI CS4-CS6] Направляющая по центру выделенного объекта

Килгор Траут

Участник
Топикстартер
Сообщения
48
Реакции
2
Всем доброго дня! Уважаемые форумчане, может быть у кого-нибудь есть скрипт, который ставит направляющую по центру выделенного объекта, горизонтальную или вертикальную, по выбору пользователя? Поискал по форуму, не нашел.
 

Drawer

Участник
Сообщения
1 817
Реакции
799
Поискал по форуму, не нашел.
Ну, наверное потому, что штатными средствами добавить направляющую и сделать выравнивание относительно ключевого объекта настолько не сложно, что писать для этого скрипт никто и не додумался :) Хотя по идее скрипт вроде и не сложный, но он точно нужен?
 
  • Спасибо
Реакции: Килгор Траут

Килгор Траут

Участник
Топикстартер
Сообщения
48
Реакции
2
Ну, наверное потому, что штатными средствами добавить направляющую и сделать выравнивание относительно ключевого объекта настолько не сложно, что писать для этого скрипт никто и не додумался :) Хотя по идее скрипт вроде и не сложный, но он точно нужен?
Дело в том, что при обработке макетов заказчика нужно эту операцию выполнять десятки раз. Отсюда и вопрос.
 

Килгор Траут

Участник
Топикстартер
Сообщения
48
Реакции
2
А чем "Align to Key Object" не устраивает?
Да почему не устраивает. Устраивает, но хотелось бы скриптом, так как по работе приходится иметь дело с макетами, в которых нужно выравнивать огромное количество мелких объектов. Ну вот буквально десятки раз.
 

Drawer

Участник
Сообщения
1 817
Реакции
799

Килгор Траут

Участник
Топикстартер
Сообщения
48
Реакции
2
Так почему не выравнивать эти объекты сразу? Зачем каждому направляющая?
Если коротко - обрабатываю макет схемы наподобие таблицы со множеством стрелочек, и прочих разнообразных значков. Иду сверху вниз. Направляющую ставлю, чтобы видеть, надо ли выравнивать другой подобный объект. Выделить их все и выравнивать скопом не представляется возможным ввиду полной мешанины, все приходится вручную делать.
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
а smart guides не помогают?
 

Килгор Траут

Участник
Топикстартер
Сообщения
48
Реакции
2
а smart guides не помогают?
Помогают. Сейчас я ими и пользуюсь. Но опять же, все эти объекты очень мелкие. Приходится туда-сюда приближать, иначе смарт гайд прицепляется к точке вместо центра. Сплошные потери времени.
 

Drawer

Участник
Сообщения
1 817
Реакции
799
JavaScript:
#target Illustrator
if (documents.length > 0 & app.activeDocument.selection.length > 0) {
    var doc = app.activeDocument;
    if (!(guidesLayer = doc.layers.getByName("Guides"))) {
        var guidesLayer = doc.layers.add();
        guidesLayer.name = "Guides";
    };
    var vb = [];
    for ( var i =0; i < doc.selection.length; i++ ) {
        vb[i] = doc.selection[i].visibleBounds;
        //закомментировать 4 строки ниже если нужны только горизонтальные направляющие
        x = (vb[i][2] + vb[i][0])/2;
        newPath = guidesLayer.pathItems.add();
        newPath.setEntirePath([[x, 8191.5], [x, -8191.5]]);
        newPath.guides = true;
        //закомментировать 4 строки ниже если нужны только вертикальные направляющие
        y = (vb[i][3] + vb[i][1])/2;
        newPath = guidesLayer.pathItems.add();
        newPath.setEntirePath([[8191.5, y], [-8191.5, y]]);
        newPath.guides = true;
    };
};
 
  • Спасибо
Реакции: densen

Drawer

Участник
Сообщения
1 817
Реакции
799
Сорян :) ошибочка...
Вот так надо:
JavaScript:
#target Illustrator
if (documents.length > 0 & app.activeDocument.selection.length > 0) {
    var doc = app.activeDocument;
    try { var guidesLayer = doc.layers.getByName("Guides") } catch (e) {
        var guidesLayer = doc.layers.add();
        guidesLayer.name = "Guides";
    };
    var vb = [];
    for ( var i =0; i < doc.selection.length; i++ ) {
        vb[i] = doc.selection[i].visibleBounds;
        //закомментировать 4 строки ниже если нужны только горизонтальные направляющие
        x = (vb[i][2] + vb[i][0])/2;
        newPath = guidesLayer.pathItems.add();
        newPath.setEntirePath([[x, 8191.5], [x, -8191.5]]);
        newPath.guides = true;
        //закомментировать 4 строки ниже если нужны только вертикальные направляющие
        y = (vb[i][3] + vb[i][1])/2;
        newPath = guidesLayer.pathItems.add();
        newPath.setEntirePath([[8191.5, y], [-8191.5, y]]);
        newPath.guides = true;
    };
};
 

Килгор Траут

Участник
Топикстартер
Сообщения
48
Реакции
2
Сорян :) ошибочка...
Вот так надо:
JavaScript:
#target Illustrator
if (documents.length > 0 & app.activeDocument.selection.length > 0) {
    var doc = app.activeDocument;
    try { var guidesLayer = doc.layers.getByName("Guides") } catch (e) {
        var guidesLayer = doc.layers.add();
        guidesLayer.name = "Guides";
    };
    var vb = [];
    for ( var i =0; i < doc.selection.length; i++ ) {
        vb[i] = doc.selection[i].visibleBounds;
        //закомментировать 4 строки ниже если нужны только горизонтальные направляющие
        x = (vb[i][2] + vb[i][0])/2;
        newPath = guidesLayer.pathItems.add();
        newPath.setEntirePath([[x, 8191.5], [x, -8191.5]]);
        newPath.guides = true;
        //закомментировать 4 строки ниже если нужны только вертикальные направляющие
        y = (vb[i][3] + vb[i][1])/2;
        newPath = guidesLayer.pathItems.add();
        newPath.setEntirePath([[8191.5, y], [-8191.5, y]]);
        newPath.guides = true;
    };
};
Огромаднейшее спасибо! Вы мне очень помогли!