Я археолог, пытаюсь сделать трехмерную визуализацию с привязкой к местности чертежей, которые мы сделали на раскопках. Сотни чертежей были сделаны с помощью Illustrator CS6, а затем прочитаны AutoCad Map 2018 и Covadis 16.0b. Чертежи в формате .ai, и я использую скрипт .jsx для автоматического экспорта их в .dxf (если сэкономить дни работы, в будущем появятся сотни файлов и, возможно, тысячи, если это сработает).
Мой коллега, который окончательно работает с AutoCad, может отлично прочитать файлы, когда я экспортирую их вручную (в формате AutoCad 2004/2005/2006). Однако он не может сделать это, когда я автоматически экспортирую их, но я могу читать их с помощью Illustrator.
Я не разработчик, и на моем рабочем месте нет разработчиков. Я только знаю, как немного изменить код или понять, какая часть кода относится к какому действию.
Я думаю, что проблема заключается в экспортированной версии (строка 107): это AutoCad 2018, и у моего коллеги уже были проблемы с ним, поэтому они всегда спрашивают dxf в версии AutoCad 2004/2005/2006. Я пытался (почти случайно) найти правильный синтаксис для такой версии, но не смог. А по вопросам безопасности мы не можем ничего обновлять или устанавливать на наших компьютерах. Кто-нибудь знает синтаксис?
Мое другое менее оптимистичное предположение состоит в том, что сценарий в целом является нефункциональным: dxf, который я экспортирую вместе с ним, выглядит скомпилированным, независимо от того, являются ли те, которые я экспортирую вручную,
Мой код частично исходит из этой темы: Как я могу запустить javascript Illustrator для всех файлов в каталоге? (для выбора всего каталога)
И этот поток: https://forums.adobe.com/thread/2345496 (хотя я немного его изменил, потому что мне нужен был только формат dxf, но, поскольку это неразрешенный поток, я боюсь ошибиться с реальной проблемой).
Дополнительный вопрос: рисунки выполнены в масштабе 1-20, и он нуждается в них в масштабе 1-1. Я думаю, что линия для масштаба составляет 110, кто-нибудь знает, как экспортировать в таком масштабе?
Вот код:
//Beginning of the selecter script
// Select several files at once
var dir = Folder.selectDialog("Where?");
var files = dir.getFiles("*.eps");
for(var f = 0; f < files.length; f++){
var doc = app.open(files[f]);
//Your processing
doc.close(SaveOptions.SAVECHANGES);
}
var destFolder, sourceFolder, files, fileType, sourceDoc, targetFile, dxfExportOpts;
// Beginning of the exporter script
// Select the source folder.
sourceFolder = Folder.selectDialog( 'Select the folder with Illustrator files you want to convert to DXF', '~' );
// If a valid folder is selected
if ( sourceFolder != null )
{
files = new Array();
//fileType = prompt( 'Select type of Illustrator files to you want to process. Eg: *.ai', '*.ai' );
fileType = "*.ai"
// Get all files matching the pattern
files = sourceFolder.getFiles( fileType );
if ( files.length > 0 )
{
// Get the destination to save the files
// destFolder = Folder.selectDialog( 'Select the folder where you want to save the converted dxf files.', '~' );
destFolderdxf = new Folder (files[0].parent+"/dxf");
if (!destFolderdxf.exists) {
destFolderdxf.create();
}
if(confirm( files.length + ' found.\nFiles will be saved in respective extension folders.\nPlease wait even if you get a spinning wheel.\n\nProceed with saving files?'))
{
for ( i = 0; i < files.length; i++ )
{
sourceDoc = app.open(files[i]); // returns the document object
// export DXF
targetFile = getNewName(destFolderdxf, '.dxf');
dxfExportOpts = getDXFOptions();
sourceDoc.exportFile( targetFile, ExportType.AUTOCAD, dxfExportOpts );
sourceDoc.close(SaveOptions.DONOTSAVECHANGES);
}
//alert( 'Done. ' + i + ' Files are saved as DXF.');
}
else
{
alert( 'No matching files found' );
}
}
else
{
// Do nothing!
}
}
/*********************************************************
getNewName: Function to get the new file name. The primary
name is the same as the source file.
**********************************************************/
function getNewName(destFolder, ext)
{
var ext, docName, newName, saveInFile, docName;
docName = sourceDoc.name;
//ext = '.dxf'; // new extension for dxf file
newName = "";
for ( var i = 0 ; docName[i] != "." ; i++ )
{
newName += docName[i];
}
newName += ext; // full dxf name of the file
// Create a file object to save the dxf
saveInFile = new File( destFolder + '/' + newName );
return saveInFile;
}
/*********************************************************
getDXFOptions: Function to set the DXF saving options of the
files using the dxfSaveOptions object.
**********************************************************/
function getDXFOptions()
{
var exportAutoCADOptions = new ExportOptionsAutoCAD();
exportAutoCADOptions.exportFileFormat = AutoCADExportFileFormat.DXF; // AutoCADExportFileFormat.DWG DXF
exportAutoCADOptions.exportOption = AutoCADExportOption.MaximumEditability; //PreserveAppearance MaximumEditability
exportAutoCADOptions.version = AutoCADCompatibility.AutoCADRelease18;
exportAutoCADOptions.exportSelectedArtOnly = false;
exportAutoCADOptions.convertTextToOutlines = false;
exportAutoCADOptions.unit = AutoCADUnit.Millimeters;
}