Вопрос – как свести пакет .ai файлов в один.

  • Автор темы Автор темы lakma
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

lakma

Участник
Топикстартер
Сообщения
21
Реакции
2
Есть такая задача – есть пакет ai файлов с фрагментами одного документа. Сейчас приходиться открывать все файлы одновременно и по очереди вырезать (из предыдущего) и вставлять вперёд (в следующий) поочерёдно все фрагменты. В результате, в последнем накапливается полный документ.

Может кто подскажет по скрипту или другому способу – как свести в один документ несколько ai файлов с сохранением координат всего содержимого.
 
Если хотите подробностей - полнее опишите проблему. "Пакет ai файлов" - это как?
 
Набор ai файлов в одной папке. В каждом файле - разные фрагменты, которые нужно свести в одну иллюстрацию.
Ищу скрипт, который последовательно вырежет всё из одного и вставит в следующий и так со всеми файлами.

Условно говоря - в 1 файле руки, во 2 - голова, в 3 - ноги... Ну или в 1 файле - бланк документа, во 2 - шапка, в 3 - промежуточный текст, в 4 - подвал с подписью... Нужно собрать всё в один файл. Все объекты находятся изначально в своих истинных координатах.

Вроде видел что-то подобное, работающее под scriptographer, но найти не могу. Может есть более простое решение...
 
А если перетащить все документы в текущий?
 
  • Спасибо
Реакции: lakma
Place в InDesign не предлагать?
 
AI2PDF + спуск полос.
 
  • Спасибо
Реакции: lakma
А если перетащить все документы в текущий?
Операция типовая, по 20-30 файлов. Хотелось бы оптимизировать и исключить ошибки.
Place в InDesign не предлагать?
Хочется обойтись Illustrator. Не для печати.
AI2PDF + спуск полос.
Не для печати. На выходе нужен единый векторный файл ai. Или я чего то не понял?
 
Условно говоря - в 1 файле руки, во 2 - голова, в 3 - ноги... Ну или в 1 файле - бланк документа, во 2 - шапка, в 3 - промежуточный текст, в 4 - подвал с подписью... Нужно собрать всё в один файл. Все объекты находятся изначально в своих истинных координатах.

Вроде видел что-то подобное, работающее под scriptographer, но найти не могу. Может есть более простое решение...
Хм... Я начинаю сомневаться в психическом здоровье того, кто предложил вам работать по такой схеме. Или это покадровая мультипликация? Если мультипликация, то для этого есть более другие инструменты.

Самое простое - Place в Иллюстраторе с вставкой файла в документ.
 
Последнее редактирование:
Хм... Я начинаю сомневаться в психическом здоровье того, кто предложил вам работать по такой схеме. Или это покадровая мультипликация? Если мультипликация, то для этого есть более другие инструменты.

Самое простое - Place в Иллюстраторе с вставкой файла в документ.
Не анимация (см фразу "условно говоря"). Не нужно, пожалуйста, оскорблений. Задача нестандартная и со стороны, действительно, кажется туповатой. Но, по другому решить не получилось, это одно из звеньев по передаче данных. Без иллюстратора и формата ai никак.
 
нафлудили-то...

(я не проверял, если что пишите - поправим)

Код:
#target illustrator


Folder.prototype.extension = function()
{
    return undefined;
}



File.prototype.extension = function()
{
    var dotPosition=this.displayName.lastIndexOf('.');
    return this.displayName.substr(dotPosition+1).toLowerCase();
}

var rootFolder = Folder.selectDialog ("Please select folder to process");
var allFiles = rootFolder.getFiles(isAiFile);

var docRef = app.open(allFiles[0]);

for(var i=1;i<allFiles.length;i++)
try{
        var newRef = app.open(allFiles[i]);

        newRef.selectObjectsOnActiveArtboard();
      
        app.copy();
        docRef.activate();
        app.paste();
      
        newRef.close(SaveOptions.DONOTSAVECHANGES);
}catch(e){}



function isAiFile(obj)
{
    var result = false;
    if (obj.constructor.name === 'File' && !obj.hidden && obj.extension()=="ai") result = true;
    return result;
}
 
  • Спасибо
Реакции: lakma
и не забыть снять галочку с Link
 

Вложения

  • illustrator-place.jpg
    illustrator-place.jpg
    140.8 КБ · Просм.: 1 290
  • Спасибо
Реакции: lakma
нафлудили-то...

(я не проверял, если что пишите - поправим)
Ух ты, то что надо! Только координаты смещает. Пробовал в CS5.

и не забыть снять галочку с Link
Вроде можно только по одному объекту помещать. Если даже все файлы получиться вставить - проблемы с оперативкой возникнут. В буфере размер будет многократно больше, чем итоговый документ, 200 файлов повесят процесс.
 
Последнее редактирование:
бывает. сейчас попробуем сместить обратно

Код:
#target illustrator


Folder.prototype.extension = function()
{
    return undefined;
}



File.prototype.extension = function()
{
    var dotPosition=this.displayName.lastIndexOf('.');
    return this.displayName.substr(dotPosition+1).toLowerCase();
}

var rootFolder = Folder.selectDialog ("Please select folder to process");
var allFiles = rootFolder.getFiles(isAiFile);

var docRef = app.open(allFiles[0]);

for(var i=1;i<allFiles.length;i++)
try{
        var newRef = app.open(allFiles[i]);

        newRef.selectObjectsOnActiveArtboard();
      
             var bounds = app.selection[0].visibleBounds;
                    for(var j=0;j<app.selection.length;j++)
                    try{
                        var currBounds = app.selection[j].visibleBounds;
                        bounds[0]=Math.min(bounds[0],currBounds[0]);
                        bounds[1]=Math.max(bounds[1],currBounds[1]);
                }catch(e){};
              
                var deltaX = bounds[0];
                var deltaY = bounds[1];
              
              
      
        app.copy();
        docRef.activate();
        app.paste();
      
         bounds = app.selection[0].visibleBounds;
                    for(var j=0;j<app.selection.length;j++)
                    try{
                        var currBounds = app.selection[j].visibleBounds;
                        bounds[0]=Math.min(bounds[0],currBounds[0]);
                        bounds[1]=Math.max(bounds[1],currBounds[1]);
                }catch(e){log(e)};
              

                 for(var j=0;j<app.selection.length;j++)
                    try{
                        app.selection[j].translate(-bounds[0]+deltaX,-bounds[1]+deltaY);
                }catch(e){};
      
        newRef.close(SaveOptions.DONOTSAVECHANGES);
}catch(e){}



function isAiFile(obj)
{
    var result = false;
    if (obj.constructor.name === 'File' && !obj.hidden && obj.extension()=="ai") result = true;
    return result;
}
 
А можете сделать так что бы скрипт работал так же только с ЕПСами?
 
меняешь "ai" на "eps" в 67-й строке
или чтобы и ai и eps открывал меняешь в 67 строке:
Код:
obj.extension () == "ai"
на
Код:
(obj.extension () == "eps" || obj.extension () == "ai")
 
Последнее редактирование:
Почему то только второй скрипт который сохраняет координаты, не сохраняет маску непрозрачности, он её просто разбирает на 2 элементы: сама иллюстрация и отдельно маска, к тому же в разных координатах. А вот взявши для эксперемента первую версию скрипта, то с ним всё впорядке, не учитывая сброс координат, но лично для моих целей это не нужно. Так что пользуюсь первой версией. Спасибо! Этим скриптом очень удобно создавать сеты для стоков. 'thank'
 
А можно до кучи что то грузящее в "многостраничный" AI по алфавиту?
И многослойный тоже для комплекта... Многослойный желательно с именами файла в слое, многостраничный не знаю, там артбордам можно ли имя присваивать, но тоже не плохо бы с именами.

И, конечно, наглось, но обратная разборка бы тоже не помешала, причём чтобы мастерслой можно было бы задавать чтобы во все пихался.
 
Статус
Закрыто для дальнейших ответов.