[AI CC-CC2022] Не меняется путь, при экспорте

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

dik973

Топикстартер
15 лет на форуме
Сообщения
596
Реакции
79
Все экспортирует в одну папку. Может кто знает почему, и как это исправить?
Код:
var myName
var myScale= prompt ("Резолюция", 300)*100/74
var myJPGopt=new ExportOptionsJPEG;
myJPGopt.artBoardClipping=false;
myJPGopt.horizontalScale=myScale;
myJPGopt.verticalScale=myScale;

for (i=0;i<app.documents.length;i++){
    myName=app.documents[i].name.split(".");
    app.documents[i].activate();
    app.documents[i].exportFile(File(app.documents[i].path+"/"+myName[0]),ExportType.JPEG,myJPGopt);
    }
 
Последнее редактирование модератором:
По первому активному документу
 
Гм, а зачем такая громоздкая и непонятная конструкция?
Вы хотите экспортировать документ в жпег без расширения или как?
поставьте alert(app.documents.path+"/"+myName[0]); - что говорит?
 
alert говорит, что путь одинаковый, а имя разное. Жпег получается с расширением, почему -- не знаю.
Громоздкая конструкция -- пишу, как знаю. Если возможно оптимизировать -- буду рад помощи.
Кстати без activate --делает экспорт одного документа под разными именами.
 
Это как?
Код:
app.documents[i].path
на всех одинаковый, а
Код:
app.documents[i].name
разное?
'%)'
 
Да, именно так.
 
попробуйте fullName вместо path
 
То же самое -- показывает полное имя по первому активному окну.
 
А вот так заработало! Почему???? Поменял только порядок просмотра массива документов на обратный. Чудеса.
Код:
var myName
var myScale= prompt ("Резолюция", 300)*100/74
var myJPGopt=new ExportOptionsJPEG;
myJPGopt.artBoardClipping=false;
myJPGopt.horizontalScale=myScale;
myJPGopt.verticalScale=myScale;

for (i=app.documents.length-1;i>=0;i--){

    myName=app.documents[i].name.split(".");
    app.documents[i].activate();
    app.redraw();
    //alert(app.documents[i].fullName);
    app.documents[i].exportFile(File(app.documents[i].path+"/"+myName[0]),ExportType.JPEG,myJPGopt);
    }
 
Последнее редактирование модератором:
Поменял только порядок просмотра массива документов на обратный. Чудеса.
Активация видимо делает активный документ первым в списке 'hmmm'
Попробуйте скопировать в самом начале documents в переменную и ее использовать
 
  • Спасибо
Реакции: dik973
А все очень просто. Коллекция app.documents — это не статичный массив. После активации документа происходит перестановка документов в массиве. Элемент app.documents[0] всегда будет указывать на активный документ. Та же проблема будет, если документы выборочно закрывать.
А вот если все документы собрать в явно указанный массив, то обрабатывать можно как угодно.
 
  • Спасибо
Реакции: VVVSLAVA и dik973
Да! Похоже в этом проблема. Вот так работает и без активации. Спасибо!
Код:
var myName
var myScale= prompt ("Резолюция", 300)*100/74
var myJPGopt=new ExportOptionsJPEG;
myJPGopt.artBoardClipping=false;
myJPGopt.horizontalScale=myScale;
myJPGopt.verticalScale=myScale;

var myDocs=[]
for (i=0;i<app.documents.length;i++){
    myDocs.push(app.documents[i])
    }
for (i=0;i<myDocs.length;i++){
    //myDocs[i].activate();
    //app.redraw();
    myName=myDocs[i].name.split(".");
    myDocs[i].exportFile(File(myDocs[i].path+"/"+myName[0]),ExportType.JPEG,myJPGopt);
    }
 
Последнее редактирование модератором:
Нет, без activate() экспортит активный документ в разные файлы. Странно, получается метод export() принадлежит не объекту Document?
 
Нет, это просто одна из милых индусских багофич - экспортируется только активный документ ;)