Генератор последовательности для Reorder Pages

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

huck

безучастник
Топикстартер
15 лет на форуме
Сообщения
703
Реакции
59
Не так давно в PitStop запилили функцию Reorder Pages. Вещь нужная, но реализована не очень — порой, чтобы что-то сделать приходится делать кучу подготовительной работы руками. Например, составить последовательность для раскладываения на листе продукции с последовательной нумерацией, чтобы после резки номера в стопках шли по порядку. Вначале делал такие последовательности в экселе, затем правил их в блокноте. От этого накапливалось раздражение, которое вылилось в небольшой скрипт. Поскольку в последнее время ковыяю скриптинг в основном в Иллюстраторе, то писал для него, но скрипт работает также в Фотошопе и Индизайне. В Акробате не работает, по крайней мере в моём XI-м.
Программист из меня не очень, поправляйте, если что.

Код:
var inp = new Window ("dialog", "Sequence",undefined, {closeButton: true});

var radioGroup = inp.add ("group");
    var r40 = radioGroup.add ("radiobutton", undefined, "4+0");
    var r44 = radioGroup.add ("radiobutton", undefined, "4+4");
    r40.value = true;
var pgsGroup = inp.add ("group");
    var inpgsn = pgsGroup.add ("statictext", undefined, "К-во полос:");
    var inpgs = pgsGroup.add ("edittext", [0, 0, 50, 20], "50", {multiline: false,borderless: true});
var pcsGroup = inp.add ("group");
    var inpcsn = pcsGroup.add ("statictext", undefined, "Шт. на листе:");
    var inpcs = pcsGroup.add ("edittext", [0, 0, 50, 20], "3", {multiline: false,borderless: true});
var outw = inp.add ("edittext", [0, 0, 300, 200], "...", {multiline: true,borderless: false});
var okbtn = inp.add ("button",undefined, "calc");

okbtn.onClick = function () {
    if ( parseInt(inpgs.text) && parseInt(inpcs.text) ) {
        var lst;
        if (r40.value) {
            lst = Math.ceil(inpgs.text/inpcs.text)
            outw.text = lst + " печатных листов(а). \n\n" + get40seq(inpgs.text,inpcs.text);
        } else {
            lst = Math.ceil(inpgs.text/inpcs.text/2)
            outw.text = lst + " печатных листов(а). \n\n" + get44seq(inpgs.text,inpcs.text);
        }
    } else { alert ( "Требуются целые числа" ); }
}
inp.show ();

function get44seq(pgs,pcs) {
    var marr = []; // массив для записи последовательности
    var lst = Math.ceil(pgs / pcs) // к-во печатных полос = к-во полос макета / 2 с округлением в большую сторону.
    if (lst % 2) {lst++} // если к-во печатных полос нечетное, добавляем еще одну
    for (var i=1; i<lst; i++) { // для первого места
        marr.push(i);
        marr.push(i+1);
        for (var j=1; j<pcs; j++) { // для остальных
            marr.push(i+lst*j);
            marr.push(i+1+lst*j);
        }
        i++;
    }
    return marr;
}

function get40seq(pgs,pcs) {
    var marr = []; // массив для записи последовательности
    var lst = Math.ceil(pgs / pcs) // к-во печатных полос = к-во полос макета / 2 с округлением в большую сторону.
    for (var i=1; i<=lst; i++) { // для первого места
        marr.push(i);
        for (var j=1; j<pcs; j++) { // для остальных
            marr.push(i+lst*j);
        }
    }
    return marr;
}
 
составить последовательность для раскладываения на листе продукции с последовательной нумерацией, чтобы после резки номера в стопках шли по порядку
А чем обычный Cut & Stack плох? Даже в простейшем варианте Quite Imposing должен решать ваши задачи.
 
  • Спасибо
Реакции: huck
А чем обычный Cut & Stack плох? Даже в простейшем варианте Quite Imposing должен решать ваши задачи.
Quite Imposing’а у нас нет, а Cut & Stack — так получилось — я не знал. Не самая удобная вещь, конечно, но, по крайней мере, лишние файлы плодить не нужно. Спасибо за наводку.
 
В Акробате не работает, по крайней мере в моём XI-м.
Понятное дело, в акробате обьектная модель совершенно другая и идеология запуска скриптов тоже. Зато, при желании, можно запросто реализовать не только генерацию последовательности, но и саму перестановку. Вот вам рыба:
Скрипт для создания скриптов ;)
 
  • Спасибо
Реакции: huck
'8()'
 
Понятное дело, в акробате обьектная модель совершенно другая и идеология запуска скриптов тоже. Зато, при желании, можно запросто реализовать не только генерацию последовательности, но и саму перестановку. Вот вам рыба:
Скрипт для создания скриптов ;)
Спасибо, посмотрю. При наличии Питстопа надобность в скриптах на Акробате не такая большая.
 
Понятное дело, в акробате обьектная модель совершенно другая и идеология запуска скриптов тоже. Зато, при желании, можно запросто реализовать не только генерацию последовательности, но и саму перестановку. Вот вам рыба:
Скрипт для создания скриптов ;)
Делаю по инструкции, единственное что делает этот бинрник — копию моей картинки в фотошопе.
 
Чтото пошло не так? Начиная с какого пункта инструкции?
 
@_MBK_, все идет так, кроме итогового результата — конечный скрипт не появляется.
 
Попробуйте в другую папку, возможно, проблема с правами пользователя.
А потом скопируете куда надо через проводник
Это не прокатило, но помог запуск Фотошопа "as Administrator". Достал уже этот виндовский дурдом с правами.
 
Получилось. Пока как эксперимент — скрипты в Акробате практически не использую '))'