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.
Сначала подключил библиотеки AutoCAD 2016 Type Library, запустил в автокаде 2016. Все работает.
Пробую запустить в автокаде 2017 (точнее это был Civil3D). Свойство Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication возвращает null
Меняю библиотеки на AutoCAD 2017 Type Library. Теперь все работает в автокаде 2017
Опять поменял библиотеки на 2016 версию, и запускаю в автокаде 2016. Не работает - Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication возвращает null
Пытаюсь запустить опять в 2017 - работает с обеими версиями библиотек
Кто-нибудь с таким сталкивался? Почему так происходит?
Название: 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
Я сейчас подгрузил библиотеку 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 - лучшее решение. Вообще огонь. А уж думал, что придется делать несколько версий из-за этого. Хорошо, что поднял эту тему, а то так бы и не узнал. Крутой форум)