Дублирование монтажной области со сценарием Illustrator CC

Я попытался создать действие для автоматизации «дублирования монтажной области» в Illustrator CC, но это было невозможно. Я хотел бы знать, есть ли какой-нибудь скрипт для этого.введите описание изображения здесь

Спасибо

Ответы (2)

Да, проблема в том, что это не записываемое действие, и хотя на первый взгляд оно кажется простым, дублирование артборда, по-видимому, требует многого. Но вы можете дополнить код своими потребностями. Этот фрагмент создаст новую монтажную область и будет использовать копирование/вставку для размещения элементов на новой монтажной области. Если новая монтажная область оказывается за пределами монтажной области, это редактирование кода. Если у вас уже есть 1000 монтажных областей, и добавление следующей приводит к ошибке или сбою, это редактирование кода. Если у вас есть проблемы с тем, как он уничтожает ваш существующий выбор или буфер обмена, вам лучше поверить, что это редактирование кода!

Но вот мой простой образец!

#target illustrator
function test(){
    var doc = app.activeDocument;
    var thisBoardIndex = doc.artboards.getActiveArtboardIndex();
    var thisBoard = doc.artboards[thisBoardIndex];
    var thisRect = thisBoard.artboardRect;
    var lastBoard = doc.artboards[doc.artboards.length - 1];
    var lastRect = lastBoard.artboardRect;
    doc.selectObjectsOnActiveArtboard();
    app.copy();
    var newBoard = doc.artboards.add(thisRect);
    var offsetH = 20;
    newBoard.artboardRect = [
        lastRect[2] + offsetH,
        lastRect[1],
        lastRect[2] + offsetH + (thisRect[2] - thisRect[0]),
        lastRect[3]
    ];
    newBoard.name = thisBoard.name + " copy";
    app.executeMenuCommand("pasteFront");
    doc.selection = null;
};
test();
Друг мой, то, что ты сделал, прекрасно работает для меня. Я попытался вставить содержимое в новый слой, но это не сработало. У вас есть решение для этого? Если у вас нет, не проблема, вы очень помогли. я добавилtargetLayer = doc.layers.add();
Затем вам нужно будет сделать цикл и переместить все выделение в новый слой после запуска команды pasteFront и до того, как вы отмените выделение. Возможно, циклу придется вернуться назад: for(var i = doc.selection.length - 1; i > -1; i--), а команда перемещения выглядит так: doc.selection[i].move(targetLayer, Размещение Элемента.PLACEATEND);
@Silly-V Выдает следующую ошибку при запуске скрипта: Error 1200: an illustrator error occured.... Line 13: -> newBoard.artboardRect = [. Можно ли это исправить?
Извините, я никак не могу воспроизвести эту ошибку. Может быть, это как-то связано с тем, как оформлен ваш документ?

Для копирования слоя, как бы безумно это ни было, одно из них является записываемым действием, поэтому вы можете использовать его для копирования слоя, а затем запускать действие как пакет в нужной папке.