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

ADN Club => AutoCAD .NET API => Тема начата: Денис Перепецкий от 14-04-2016, 12:26:36

Название: Работа с AutoCAD из внешней DLL
Отправлено: Денис Перепецкий от 14-04-2016, 12:26:36
Приветствую Всех.
Начну из далека.
Есть программный комплекс ЛИРА 10 http://lira-soft.com/ (http://lira-soft.com/).
С недавнего времени для нее разработчики добавили возможность писать плагины.
В проекте подключены все необходимые References.
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fdl2.joxi.net%2Fdrive%2F2016%2F04%2F14%2F0013%2F0017%2F868369%2F69%2F49530f6964.jpg&hash=613b69190850d3bdd68751927e45912e)

Пишу некий плагин. Плагин работает в ЛИРЕ, без участия AutoCAD. После некоей обработки результатов расчета ЛИРЫ, создаю пустую Database и пишу в нее некие примитивы, сохраняю в файл, открываю его и прочее.
Компиляция проходит успешно, без ошибок. НО.
При запуске плагина все отрабатывает успешно кроме блока где идет работа с API AutoCAD. Возникает такая ошибка.
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fjoxi.ru%2FE2p1gjJUByZdkA.jpg&hash=29eb48651c37c5e42bfb8c2daaabcf0a)

Я в отчаянии, что делать и куда копать не понимаю.
Понимаю что не совсем по адресу вопрос, но все же... может кто выручит.

Может я в принципе неверно начал делать и нужно по другому.

Заранее спасибо.
Название: Re: Работа с AutoCAD из внешней DLL
Отправлено: Александр Пекшев aka Modis от 14-04-2016, 12:29:39
Для автокадовсих dll в свойствах установлено "Копировать локально - false"?
Название: Re: Работа с AutoCAD из внешней DLL
Отправлено: Андрей Бушман от 14-04-2016, 12:30:08
Установил для этих сборок значение свойства CopyLocal в False?

UPD
Саша меня опередил :)
Название: Re: Работа с AutoCAD из внешней DLL
Отправлено: Александр Ривилис от 14-04-2016, 12:32:19
Я в отчаянии, что делать и куда копать не понимаю.
Понимаю что не совсем по адресу вопрос, но все же... может кто выручит.

Может я в принципе неверно начал делать и нужно по другому.

Заранее спасибо.
Нельзя использовать acdbmgd.dll, acmgd.dll и accoremgd.dll из dll, которая не загружена внутрь AutoCAD. Это аксиома. Так что у тебя остаётся вариант использовать COM/ActiveX для работы с AutoCAD.
Название: Re: Работа с AutoCAD из внешней DLL
Отправлено: Андрей Бушман от 14-04-2016, 12:34:18
Если я верно понял автора, то у него это два отдельных плагина: один для лиры и один для акада. Результаты, полученные на выходе первого являются входными данными для обработки вторым.
Название: Re: Работа с AutoCAD из внешней DLL
Отправлено: Александр Ривилис от 14-04-2016, 12:36:30
Если я верно понял автора, то у него это два отдельных плагина: один для лиры и один для акада. Результаты, полученные на выходе первого являются входными данными для обработки вторым.
А я так понял, что это один плагин. И грузится он в Лиру (см. на картинке LiraAPI в References)
Название: Re: Работа с AutoCAD из внешней DLL
Отправлено: Андрей Бушман от 14-04-2016, 12:37:55
А я так понял, что это один плагин. И грузится он в Лиру (см. на картинке LiraAPI в References)
Да, я не заметил этого. :)
Название: Re: Работа с AutoCAD из внешней DLL
Отправлено: Андрей Бушман от 14-04-2016, 12:44:32
Я в отчаянии, что делать и куда копать не понимаю.
Понимаю что не совсем по адресу вопрос, но все же... может кто выручит.
Зависит от того, как ты видишь архитектуру своего решения. Если исходишь из того, что акад всегда на том же компе, где и лира, то можно заюзать acad.exe через COM. К сожалению, accoreconsole.exe не имеет COM API. Если хочешь абстрагироваться от наличия и версии акада, то можешь написать WCF-службу, которая может хоститься на др. компьютере (на котором установлен акад).  Эта служба будет создавать DWG с нужным тебе контентом.
Название: Re: Работа с AutoCAD из внешней DLL
Отправлено: Денис Перепецкий от 14-04-2016, 13:14:14
Для автокадовсих dll в свойствах установлено "Копировать локально - false"?

Да, все в False, но это в данном случае не влияет ни на что.


Плагин один, разные классы для работы с Лирой и AutoCAD. Грузится в Лиру.

Нельзя использовать acdbmgd.dll, acmgd.dll и accoremgd.dll из dll, которая не загружена внутрь AutoCAD. Это аксиома. Так что у тебя остаётся вариант использовать COM/ActiveX для работы с AutoCAD.

Вот собственно и ответ. Значит буду рыть в направлении COM API.
Где есть Лира, там есть AutoCAD, для деятельности моих коллеги и меня это аксиома.

WCF пока оставлю в стороне, т.к. должно работать вне сети.

Всем огромное спасибо.
Название: Re: Работа с AutoCAD из внешней DLL
Отправлено: Владимир Шу от 14-04-2016, 15:17:31
Есть программный комплекс ЛИРА 10 http://lira-soft.com/.
С недавнего времени для нее разработчики добавили возможность писать плагины.
В проекте подключены все необходимые References.
А не подскажите, где это счастье можно скачать?
Название: Re: Работа с AutoCAD из внешней DLL
Отправлено: Андрей Бушман от 14-04-2016, 15:27:12
на сайте же вроде как ссылки имеются: http://lira-soft.com/download/
Название: Re: Работа с AutoCAD из внешней DLL
Отправлено: Владимир Шу от 14-04-2016, 15:30:33
Я грешным делом думал, что там есть SDK на подобии ObjectARX и вот именно этого сдк по ссылкам не видно, потому и спросил.
Название: Re: Работа с AutoCAD из внешней DLL
Отправлено: Андрей Бушман от 14-04-2016, 15:32:08
может оно так и есть (и доступно "узкому кругу ограниченных людей" за доп. плату :) )... я не утверждаю, что обозначенный контент присутствует по ссылкам, т.к. не качал.
Название: Re: Работа с AutoCAD из внешней DLL
Отправлено: Денис Перепецкий от 14-04-2016, 15:34:25
Узнаю коллегу конструктора))
Есть некое подобие описания по Лира API. В папке с установленной лирой. Если надо могу скинуть на почту.

Лежит вот тут
C:\Program Files\Lira Soft\Lira10.4\LiraAPI

Есть даже примеры, но они на C++.
Название: Re: Работа с AutoCAD из внешней DLL
Отправлено: Андрей Бушман от 14-04-2016, 21:07:54
Денис, вообще-то ответом было не твоё сообщение #8, но сообщение #3 от А.Н. Ривилиса. Не промахивайся...
Название: Re: Работа с AutoCAD из внешней DLL
Отправлено: Александр Ривилис от 14-04-2016, 21:45:02
Денис, вообще-то ответом было не твоё сообщение #8, но сообщение #3 от А.Н. Ривилиса. Не промахивайся...
Угу. Я уже изменил.
Название: Re: Работа с AutoCAD из внешней DLL
Отправлено: Денис Перепецкий от 14-04-2016, 22:12:19
Да я как бы и не со зла. Думал что не только что нельзя, но и куда идти может людям решением показаться....
Название: Re: Работа с AutoCAD из внешней DLL
Отправлено: Александр Ривилис от 14-04-2016, 22:44:34
Думал что не только что нельзя, но и куда идти может людям решением показаться....
Куда идти (т.е. про COM/ActiveX) тоже в моём сообщении.
Название: Re: Работа с AutoCAD из внешней DLL
Отправлено: Денис Перепецкий от 14-04-2016, 23:50:26
Ну... ладно. Не знал что так все принципиально. Извините.
Название: Re: Работа с AutoCAD из внешней DLL
Отправлено: Александр Ривилис от 14-04-2016, 23:56:34
Ну... ладно. Не знал что так все принципиально. Извините.
Всё нормально. Просто достаточно часто из неопытности задающий вопрос ставит отметку Решение на своё сообщение просто не задумываясь. Хорошо если его сообщение действительно содержит решение (как в данном случае). Но нередко отмечаются сообщения типа "Спасибо! Всё получилось!", но совершенно не содержащие даже намёка на решение... Это я просто бурчу... :)