1

我有一个程序可以对一些图纸进行批处理。当我尝试打开其中一张图纸时,会引发异常“错误解密数据”。这张图尤其是由 AutoCAD 以外的第三方工具生成的。此外,此问题仅在 AutoCAD 2011 中出现。在 AutoCAD 2010 中,它会提示用户文件是在 AutoCAD 之外生成的,但他们可以单击,批处理将继续。我尝试使用托管 .NET API 和 COM Interop API 打开它,但都给出了相同的错误。

这是来自 AutoCAD 表单的帖子,尽管它没有为我提供解决方案:

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 互操作

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);
4

1 回答 1

2

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);
于 2010-11-01T15:40:56.233 回答