我有一个程序可以对一些图纸进行批处理。当我尝试打开它时,其中一个图形会抛出异常“Error Decrypting Data”。特别是此图纸是由AutoCAD以外的第三方工具生成的。此外,此问题仅发生在AutoCAD 2011中。在AutoCAD 2010中,它会提示用户该文件是在AutoCAD外部生成的,但是他们可以单击,批处理将继续。我尝试使用托管的.NET API和COM Interop API打开它,但两者都给出了同样的错误。
以下是AutoCAD formus的一篇文章,虽然它没有为我提供解决方案:
http://forums.autodesk.com/t5/NET/Error-Decrypting-Data-Acad-2011/td-p/2661762/highlight/true
托管API
string drawingFilePath = @"C:\Drawings\MyDrawing.dwg";
Application.DocumentManager.Open(drawingFilePath, false);
COM Interop
string drawingFilePath = @"C:\Drawings\MyDrawing.dwg";
Object comAutoCAD = Application.AcadApplication;
Object comDocuments = comAutoCAD.GetType().InvokeMember("Documents", BindingFlags.GetProperty, null, comAutoCAD, new object[] { });
Object comDocument = comDocuments.GetType().InvokeMember("Open", BindingFlags.InvokeMethod, null, comDocuments,
new object[] { drawingFilePath, false, Type.Missing });
Document.FromAcadDocument(comDocument);
答案 0 :(得分:1)
来自AutoCAD论坛的人发布了一个对我有用的答案。
http://forums.autodesk.com/t5/NET/Error-Decrypting-Data-Acad-2011/td-p/2661762/page/2
以下是一个例子:
const string systemVar_DwgCheck = "DWGCHECK";
Int16 dwgCheckPrevious = (Int16)Application.GetSystemVariable(systemVar_DwgCheck);
Application.SetSystemVariable(systemVar_DwgCheck, 2);
Document document = Application.DocumentManager.Open(@"C:\Drawings\MyDrawing.dwg", false);
// Do stuff...
Application.SetSystemVariable(systemVar_DwgCheck, dwgCheckPrevious);