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

Килгор Траут

Участник
Топикстартер
Сообщения
48
Реакции
2
Всем доброго дня! Уважаемые форумчане, может быть у кого-нибудь есть скрипт, который ставит направляющую по центру выделенного объекта, горизонтальную или вертикальную, по выбору пользователя? Поискал по форуму, не нашел.
 
Поискал по форуму, не нашел.
Ну, наверное потому, что штатными средствами добавить направляющую и сделать выравнивание относительно ключевого объекта настолько не сложно, что писать для этого скрипт никто и не додумался :) Хотя по идее скрипт вроде и не сложный, но он точно нужен?
 
  • Спасибо
Реакции: Килгор Траут
Ну, наверное потому, что штатными средствами добавить направляющую и сделать выравнивание относительно ключевого объекта настолько не сложно, что писать для этого скрипт никто и не додумался :) Хотя по идее скрипт вроде и не сложный, но он точно нужен?
Дело в том, что при обработке макетов заказчика нужно эту операцию выполнять десятки раз. Отсюда и вопрос.
 
А чем "Align to Key Object" не устраивает?
Да почему не устраивает. Устраивает, но хотелось бы скриптом, так как по работе приходится иметь дело с макетами, в которых нужно выравнивать огромное количество мелких объектов. Ну вот буквально десятки раз.
 
Так почему не выравнивать эти объекты сразу? Зачем каждому направляющая?
Если коротко - обрабатываю макет схемы наподобие таблицы со множеством стрелочек, и прочих разнообразных значков. Иду сверху вниз. Направляющую ставлю, чтобы видеть, надо ли выравнивать другой подобный объект. Выделить их все и выравнивать скопом не представляется возможным ввиду полной мешанины, все приходится вручную делать.
 
а smart guides не помогают?
 
а smart guides не помогают?
Помогают. Сейчас я ими и пользуюсь. Но опять же, все эти объекты очень мелкие. Приходится туда-сюда приближать, иначе смарт гайд прицепляется к точке вместо центра. Сплошные потери времени.
 
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
Сорян :) ошибочка...
Вот так надо:
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;
    };
};
 
Сорян :) ошибочка...
Вот так надо:
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;
    };
};
Огромаднейшее спасибо! Вы мне очень помогли!