[AI CC-CC2021] Дописать скрипт.

Статус
Закрыто для дальнейших ответов.

~RA~

Одарённая.
Топикстартер
12 лет на форуме
Сообщения
11 891
Реакции
3 458

~RA~

Одарённая.
Топикстартер
12 лет на форуме
Сообщения
11 891
Реакции
3 458

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Тогда все просто.
Открытие текстового файла
Код:
var base=new File(...
   base.open("r");
вставляй перед циклом перебора файлов, чтение
Код:
var txt=base.readln();
внутри цикла перед присвоением, а закрытие
Код:
base.close();
после завершения цикла
Тогда она все строки по очереди будет присваивать всем текстовым боксам
Параллельно можно открыть другой текстовый файл и считывать из него точно так же построчно имена файлов для сохранения
 
  • Спасибо
Реакции: ~RA~

~RA~

Одарённая.
Топикстартер
12 лет на форуме
Сообщения
11 891
Реакции
3 458

~RA~

Одарённая.
Топикстартер
12 лет на форуме
Сообщения
11 891
Реакции
3 458
В какой путь, какую переменную?
Сейчас там полный путь.
Код:
var base=new File("/Users/RA/Desktop/Новая\ папка/mark.txt");
А нужно вместо
Код:
/Users/RA/Desktop/Новая\ папка/
подставить
Код:
var WorkPath = doc.path;
объявленный ранее.
doc это
Код:
var doc = app.activeDocument;
Привычными мне методами сделать это не удалось. :( А может вину тому вечер воскресенья…
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Тю!
Код:
var base=new File(WorkPath+"mark.txt");
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Ну да "A"+"B"="AB"
 

Oleg Butrin

20 лет на форуме
Сообщения
1 990
Реакции
1 216
вставляй перед циклом перебора файлов, чтение
Без проверки на EOF, красота!
var base=new File(WorkPath+"mark.txt");
Получится оригинальное имя файла, что-то типа "/Users/RA/Desktop/Новая\ папкаmark.txt" -- ибо разделитель пропущен.
Ох, чую, в коде костыль на костыле и костылем погоняет! 'rake'
 
  • Спасибо
Реакции: _MBK_

~RA~

Одарённая.
Топикстартер
12 лет на форуме
Сообщения
11 891
Реакции
3 458
ибо разделитель пропущен.
А путь им разве не заканчивается?
То есть в WorkPath содержится "/Users/RA/Desktop/Новая\ папка/"
Ох, чую, в коде костыль на костыле и костылем погоняет! 'rake'
Присоединяйтесь. ;)
Вот, что пока наваято. ;)
Код:
/* Скрипт для пакетного или единичного поворота документа
Корректно работает, если в документе содержится один артборд.
*/

/* Окно меню с выбором вырианта работы:
поворачиваем активный документ или все документы в выбранной папке */
var doc = app.activeDocument;
var WorkPath = doc.path;
var Metka='Current';
var Rotate=[];
var Rotation;
var files;
var sourceFile;
var SaveOptions = new IllustratorSaveOptions();

function RotateDoc () {
var doc = app.activeDocument;
var ArtBoardSize = doc.artboards[0].artboardRect;
var ParentLayer = doc.layers;
var LockedLayers = [];
var UnvisibleLayers = [];

var ArtBoardWidth=Math.abs(ArtBoardSize[2]-ArtBoardSize[0]);
var ArtBoardHeight=Math.abs(ArtBoardSize[3]-ArtBoardSize[1]);

var dX= (ArtBoardSize[2]+ ArtBoardSize[0])/2;
var dY = (ArtBoardSize[3]+ ArtBoardSize[1])/2;

doc.artboards[0].artboardRect = [-ArtBoardWidth/2, ArtBoardHeight/2, ArtBoardWidth/2, -ArtBoardHeight/2];
if (Rotation!=180) {
doc.artboards[0].artboardRect = [-ArtBoardHeight/2, ArtBoardWidth/2, ArtBoardHeight/2, -ArtBoardWidth/2];
}


for (i=0; i<doc.layers.length; i++) {
        if (doc.layers[i].locked == true) {
            LockedLayers[i] = doc.layers[i];
            // alert (LockedLayers[i])
            }
        if (doc.layers[i].visible == false) {
            UnvisibleLayers[i] = doc.layers[i]
            }
    doc.layers[i].locked = false;
    doc.layers[i].visible = true;
    for (k=0; k<doc.layers[i].pageItems.length; k++) {
        if (doc.layers[i].pageItems[k].parent == ParentLayer[i]) {
        doc.layers[i].pageItems[k].translate(-dX, -dY);       
        doc.layers[i].pageItems[k].rotate(Rotation,true, true, true, true, Transformation.DOCUMENTORIGIN);
        }
    }
      // if (doc.layers[i].name == 'knife') { doc.layers[i].locked = true }
}
for (i=0; i<LockedLayers.length; i++) {
        if (LockedLayers[i]!=null) {
     LockedLayers[i].locked = true;
     }
}
for (i=0; i<UnvisibleLayers.length; i++) {
        if (UnvisibleLayers[i]!=null) {
     UnvisibleLayers[i].visible = false;
     }
}
}
// alert (WorkPath);
var WorkOptions = new Window ('dialog', 'Повернуть документ');
var AllFiles = WorkOptions.add ('group');
AllFiles.orientation = 'row';
var AllFilesTxt = AllFiles.add ('statictext', undefined, 'Все документы в этой папке');
var ChAllFiles = AllFiles.add ('checkbox');
var RotateGroup = WorkOptions.add ('group');
RotateGroup.orientation = "row";
Rotate[0] = RotateGroup.add ('button', [0,0, 54,18], '90\u00b0');
Rotate[0].active = true;
Rotate[1] = RotateGroup.add ('button', [0,0, 54,18], '180\u00b0');
Rotate[2] = RotateGroup.add ('button', [0,0, 54,18], '270\u00b0');
Rotate[0].onClick = function () {Rotation = 90; WorkOptions.close ()    }
Rotate[1].onClick = function () {Rotation = 180; WorkOptions.close () }
Rotate[2].onClick = function () {Rotation = 270; WorkOptions.close () }
WorkOptions.show ();
//alert (Rotation);
if (ChAllFiles.value == true) {
    app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
    files = new Array();
    files = WorkPath.getFiles('*.pdf').sort();
    // alert (files.length);
    
var base=new File(WorkPath+"mark.txt");
base.open("r");
var base2=new File(WorkPath+"name.txt");
base.open("r");

    for (a=0; a<files.length; a++) {
        sourceFile = app.open(files[a]);
        doc = app.activeDocument;
        NameFiles = doc.fullName;
        // alert (NameFiles);
        sourceFile = RotateDoc();
        
// заменяем текст
        if ( app.documents.length > 0 ) {
           var txt=base.readln();
        var Item = app.activeDocument.textFrames[0];
        Item.contents=txt;
        } else alert("No document!");
// конец замены текста
var filename=base2.readln();
        SaveOptions.pdfCompatible=false;
        SaveOptions.embedICCProfile=false;
        SaveOptions.compressed=true;
        SaveOptions.compatibility=Compatibility.ILLUSTRATOR16;
        doc.saveAs(filename, SaveOptions);
        doc.close(SaveOptions.DONOTSAVECHANGES);
    }
base.close();
name.close();
}
else { doc = RotateDoc ()}
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Без проверки на EOF
Ну это не так страшно, предполагается, что сколько файлов столько строк, в конце можно с запасом строчек надублировать
разделитель пропущен.
Кстати да, забыл совсем
Код:
var base=new File(WorkPath+"/mark.txt");
 

~RA~

Одарённая.
Топикстартер
12 лет на форуме
Сообщения
11 891
Реакции
3 458
@Oleg Butrin, ваша правда.
Скриншот 2016-10-16 23.21.03.png

Но как же он работает тогда? ;)
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
var base2=new File(WorkPath+"/name.txt");
base2.open("r");
 
  • Спасибо
Реакции: ~RA~

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Cоответственно
base.close();
base2.close();
 

~RA~

Одарённая.
Топикстартер
12 лет на форуме
Сообщения
11 891
Реакции
3 458

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Ну так правильно, ему и там разделитель вставлять надо
doc.saveAs(WorkPath+"/"+filename, SaveOptions);
 
Статус
Закрыто для дальнейших ответов.