Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Кирилл Захаров от 08-06-2017, 17:56:46

Название: Проблема получением COM объекта AcadApplication
Отправлено: Кирилл Захаров от 08-06-2017, 17:56:46
Очень странная проблема:
Использую код Александра Ривилиса, который он написал в этом сообщении - http://adn-cis.org/forum/index.php?topic=7835.msg26484#msg26484.
Кто-нибудь с таким сталкивался? Почему так происходит?
Название: Re: Проблема получением COM объекта AcadApplication
Отправлено: Дмитрий Загорулькин от 08-06-2017, 18:15:07
Так ведь это же COM. Если используются ссылки на COM библиотеки, то надо компилировать практически под каждую версию и под каждую разрядность отдельную сборку. Используйте тип dynamic без добавления COM-ссылок.
Название: Re: Проблема получением COM объекта AcadApplication
Отправлено: Кирилл Захаров от 08-06-2017, 18:31:54
Спасибо, Дмитрий.
Основная проблема была в том, что я не мог заставить код работать в автокаде 2016 при подключенных библиотеках для 2016 версии - AutoCAD 2016 Type Library.
Я сейчас подгрузил библиотеку Autodesk.AutoCAD.Interop из ObjectARX SDK и эта проблема отпала.

Очень интересно то, что вы говорите. Буду разбираться с dynamic. Раньше не использовал.

Название: Re: Проблема получением COM объекта AcadApplication
Отправлено: Дмитрий Загорулькин от 08-06-2017, 18:37:33
Там, собственно, разбираться не с чем:
Код - C# [Выбрать]
  1. string localFile;
  2. try
  3. {
  4.     dynamic app = Application.AcadApplication;
  5.     app.ActiveDocument.Utility.GetRemoteFile("http://maestrogroup.com.ua/DEMO/L1.dwg", out localFile, true);
  6. }
  7. catch (System.Exception ex)
  8. {
  9.     Application.ShowAlertDialog(ex.Message);
  10. };
  11.  
Название: Re: Проблема получением COM объекта AcadApplication
Отправлено: Кирилл Захаров от 08-06-2017, 18:40:38
Ну да, и еще библиотеку Microsoft.CSharp компилятор потребовал. Спасибо
Название: Re: Проблема получением COM объекта AcadApplication
Отправлено: Александр Ривилис от 08-06-2017, 19:54:51
Я сейчас подгрузил библиотеку Autodesk.AutoCAD.Interop из ObjectARX SDK и эта проблема отпала.
Временно. Для каждой разрядности AutoCAD (x86/x64) требуется подключать свои Autodesk.AutoCAD.Interop.dll и Autodesk.AutoCAD.Interop.Common.dll
Так что лучше действительно использовать dynamic - он сам определит какая библиотека нужна.
Название: Re: Проблема получением COM объекта AcadApplication
Отправлено: Кирилл Захаров от 09-06-2017, 10:12:11
Да да да, использовать dynamic - лучшее решение. Вообще огонь. А уж думал, что придется делать несколько версий из-за этого. Хорошо, что поднял эту тему, а то так бы и не узнал. Крутой форум)