代码之家  ›  专栏  ›  技术社区  ›  skeletank

打开绘图时出现异常“数据递减错误”

  •  1
  • skeletank  · 技术社区  · 15 年前

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

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

    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);
    
    1 回复  |  直到 15 年前
        1
  •  2
  •   skeletank    15 年前

    来自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);