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

ADN Club => AutoCAD .NET API => Тема начата: oblfakir от 23-10-2017, 14:11:43

Название: Взаимодействие по Interop при нескольких запущенных AutoCAD
Отправлено: oblfakir от 23-10-2017, 14:11:43
Приветствую всех. Проблема состоит в следующем: есть плагин AutoCAD, состоящей из трех частей - встраиваемых dll, окон на WPF и части на Lisp. Взаимодействие между окнами на WPF происходит через Interop API, объект получается через
Код - C# [Выбрать]
  1. (AcadApplication) Marshal.GetActiveObject("AutoCAD.Application.XX");
, где XX - номер версии. Этот метод получает только первый запущенный экземпляр автокада. Появилась необходимость при нескольких параллельно запущенных экземплярах AutoCAD обращаться только к тому, из которого было запущено окно. Вопрос: как организуется такое взаимодействие?
Название: Re: Взаимодействие по Interop при нескольких запущенных AutoCAD
Отправлено: Александр Ривилис от 23-10-2017, 15:41:20
Приветствую на форуме!
Вопрос: как организуется такое взаимодействие?
Короткий ответ: никак.
Длинный ответ: AcadApplication из приложения, загруженного внутрь AutoCAD можно получить так:
Код - C# [Выбрать]
  1. AcadApplication acadApp = Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication as AcadApplication;
Название: Re: Взаимодействие по Interop при нескольких запущенных AutoCAD
Отправлено: oblfakir от 23-10-2017, 16:18:54
Спасибо за ответ. В таком случае, видимо придется уходить от Interop и переделать окна на вызов непосредственно из AutoCAD.
Название: Re: Взаимодействие по Interop при нескольких запущенных AutoCAD
Отправлено: Александр Ривилис от 23-10-2017, 17:19:24
Спасибо за ответ. В таком случае, видимо придется уходить от Interop и переделать окна на вызов непосредственно из AutoCAD.
Я думаю это будет правильным решением.