Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2018, 13:02   #1
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию [AutoCAD] Как подключиться к "неактивному" Applications?

Подозреваю, что на этот вопрос ответа опять не найдётся, но очень надеюсь, что мне всё-таки повезёт.
Проблема вот в чём: я работаю с двумя запущенными экземплярами одного и того же АвтоКАДа. Всё хорошо, когда из Delphi надо работать с "активным" экземпляром, но я, как ни пытался, так и не смог найти как подключиться ко второму экземпляру... При этом "активным" при подключении является не активное в данный момент окно, а последнее запущенное (открытое) окно.
Т.е. я знаю про такой способ подключения к АвтоКАДу:
Код:
Function GetAcadApplication: IAcadApplication;
var
  v : OleVariant;
begin
  v := GetActiveOleObject('AutoCAD.Application');
  Result := IDispatch(v) as IAcadApplication;
end;
Но если у меня два запущенных АвтоКАДа - он присоединяется всегда только к одному. Как присоединиться ко второму?
Очень надеюсь, что найдётся здесь всё-таки человек, который поможет с этим вопросом...
Ship_1 вне форума Ответить с цитированием
Старый 26.02.2018, 13:35   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Посмотреть для начала объектную модель AutoCAD. Я здесь по-быстрому нагуглил. Вижу - есть свойство Active - похоже активный документ (активный экземпляр?) и свойство Documents - коллекция документов. Вполне возможно это то, что нужно, выбрать нужный документ из коллекции и сделать его активным. А может и нет. Нужно тщательно изучить объектную модель по более детальному описанию. В хелпе автокада скорее всего. Дерзай ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 26.02.2018 в 13:39.
Аватар вне форума Ответить с цитированием
Старый 26.02.2018, 13:57   #3
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

Объектную модель-то я смотрел (по ней и работаю в АвтоКАДе). Documents - коллекция открытых файлов в конкретном экземпляре АвтоКада (Application). Active есть у Document и всего лишь определяет с каким файлом в данном экземпляре приложения идёт работа. Но это никак не отражает какой именно экземпляр АвтоКАДа активен и у Application нет свойства Active. А даже если бы и был - подключение идёт только к активному Application, а способа получить все запущенные Application мне тоже не удалось найти.
На мой взгляд, наиболее качественно объектная модель AutoCAD расписана здесь.
В любом случае, спасибо за участие! Но тут всё сложнее... Наверное.
Ship_1 вне форума Ответить с цитированием
Старый 26.02.2018, 14:24   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А привязываться к уже запущенным экземплярам обязательно? CreateOleObject с открытием нужного файла не катит? Судя по ссылке объектная модель не предполагает переключения между сессиями
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.02.2018, 14:38   #5
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

Мне кажется, лучше понаплодить документов, чем приложений. Да и открывается файл быстрее (если не перегружен), чем запускается приложение.
В конечном итоге суть примерно такая: есть два экземпляра АвтоКАДа. С одним я работаю в одном файле, в другом экземпляре просматриваю необходимую для работы информацию в других файлах. В файлах множество объектов, из-за чего сильно затруднена визуальная просматриваемость. Я хочу, грубо говоря, одним кликом по кнопке в том же экземпляре программы скопировать часть объектов по определённым параметрам в новый файл.
Если делать вручную, то копирование, создание нового файла (не считая время на клики) и вставка занимает примерно пол минуты. Запуск нового экземпляра программы занимает больше 10 минут...
Ship_1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Delphi] Как подключиться к "неактивному" Applications? Найдись, знаток!.. Ship_1 CAD проектирование 0 26.02.2018 13:04
Как подключиться к внешней БД? Embarcadirov Общие вопросы Delphi 3 21.10.2017 00:02
FTP как подключиться aank10 C++ Builder 1 13.09.2012 15:49
Послать Ctrl+C неактивному окну (SendMessage не реботает) TwiX Win Api 7 02.07.2011 06:06
как подключиться к БД из dll? fLytarget Помощь студентам 3 18.08.2008 17:42