Я делаю Javascript Illustrator CS6, который делает следующее:
- Откройте папку с файлами Illustrator
- Откройте каждый файл в папке (эти файлы называются исходными файлами)
- Выбрать все содержимое исходного файла
- Скопируйте содержимое исходного файла
- Создайте новый целевой файл. Вставьте это содержимое в целевой файл как новый слой.
- Убедитесь, что новый слой имеет то же имя, что и старый исходный файл.
Мой скрипт работает, за исключением того, что он неправильно перебирает файлы в исходной папке. Вместо этого он отлично работает с первым исходным файлом. Но затем он бесконечно просто вставляет второй исходный файл в целевой документ (т. Е. Он не перемещается ни на какой другой исходный файл). Он просто бесконечно вставляется, и поэтому мне приходится принудительно выходить!
Как я могу заставить его правильно перебирать папки, а затем переходить к следующему файлу.
Вот мой код:
// JavaScript Document
//Set up vairaibles
var destDoc, sourceDoc, sourceFolder, newLayer;
// Select the source folder.
sourceFolder = Folder.selectDialog('Select the folder with Illustrator files that you want to mere into one', '~');
destDoc = app.documents.add();
// If a valid folder is selected
if (sourceFolder != null) {
files = new Array();
// Get all files matching the pattern
files = sourceFolder.getFiles();
if (files.length > 0) {
// Get the destination to save the files
for (i = 0; i < files.length; i++) {
sourceDoc = app.open(files[i]); // returns the document object
var myLayers = sourceDoc.layers; // Select All layers in Active Document
//Go through all layers of source document and copy artwork
for (i = 0; i < myLayers.length; i++) {
myLayers[i].hasSelectedArtwork = true;
};
with(sourceDoc) {
var count = pageItems.length;
for (var i = 0; i < count; i++) {
pageItems[i].selected = true;
}
redraw();
copy();
for (var i = 0; i < count; i++) {
pageItems[i].selected = false;
}
}
//Create a new title variable that has the title of the source document
var title = sourceDoc.name;
var title = title.substring(0, title.length - 4); //(remove extension from name)
//Close the Source Document
sourceDoc.close(SaveOptions.DONOTSAVECHANGES);
//Open the Destination Document and create a new layer in it that is named after the title variation
newLayer = destDoc.layers.add();
newLayer.name = title;
//Paste into this new layer
newLayer = app.paste();
}
}
else {
alert('No matching files found');
}
}
Пс. Я не был уверен, стоит ли публиковать это в Code Review или Графический дизайн, но я думаю, что переполнение стека — лучшее место для публикации, так как это общий вопрос о зацикливании javascript, поэтому я надеюсь, что это правильное место.