Как исправить нечитаемые или скомпилированные экспортированные DXF - PullRequest
0 голосов
/ 07 января 2019

Я археолог, пытаюсь сделать трехмерную визуализацию с привязкой к местности чертежей, которые мы сделали на раскопках. Сотни чертежей были сделаны с помощью 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;  
}  
...