Я разрабатываю плагин AutoCAD для своего приложения. Я использую AutoCAD 2012. Плагин открывает именованный канал .NET, поэтому я могу легко подключиться к нему из своего настольного приложения.
Прежде всего, я создал интерфейс. Вот
[ServiceContract]
public interface IConnector
{
[OperationContract]
[FaultContract(typeof(Exception))]
void GetPdfVersion(string filePath, string exportFilePath);
}
Мой плагин AutoCAD является производным от интерфейса IExtensionApplication, поэтому в методе Initialize я написал это
this.host = new ServiceHost(typeof(Printer), new[] { new Uri("net.pipe://localhost") });
this.host.AddServiceEndpoint(typeof(IConnector), new NetNamedPipeBinding(), "GetPdfVersion");
this.host.Open();
В одной из функций мне нужно открыть документ и обработать его. Итак, я написал следующий код
var docColl = Application.DocumentManager;
Document curDraw = null;
try
{
if (File.Exists(@"d:\1.dwg"))
{
curDraw = docColl.Open(@"d:\1.dwg", true, string.Empty);
}
}
catch (Exception e)
{
Console.WriteLine(e);
}
Но это вызывает исключение COM в коде curDraw = docColl.Open(@"d:\1.dwg", true, string.Empty); с HRESULT = -2147418113
Мне нужен объект Document для обработки файла DWG. Есть ли какие-нибудь способы исправить эту ошибку?
docColl.Open? Например, закрыть все открытые документы. Если да, то какую ошибку вы получили? - person Evgeny Timoshenko   schedule 19.12.2013