Исключение «Ошибка расшифровки данных» при открытии чертежа - PullRequest
1 голос
/ 20 октября 2010

У меня есть программа, которая выполняет пакетную обработку некоторых чертежей. Один из рисунков выдает исключение «Ошибка расшифровки данных» при попытке открыть его. Этот чертеж, в частности, был создан сторонним инструментом, отличным от AutoCAD. Кроме того, эта проблема возникает только в AutoCAD 2011. В AutoCAD 2010 он предлагает пользователю, что файл был создан за пределами AutoCAD, но он может щелкнуть, и пакет будет продолжен. Я попытался открыть его с помощью управляемого API .NET и 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 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);

1 Ответ

1 голос
/ 01 ноября 2010

Кто-то из форумчан 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);
...