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

ADN Club => AutoCAD .NET API => Тема начата: Дмитрий Загорулькин от 22-06-2017, 13:54:49

Название: Как выполнить вывод сообщения в комстроку неактивного чертежа?
Отправлено: Дмитрий Загорулькин от 22-06-2017, 13:54:49
Всем доброго дня!
Использую метод Editor.WriteMessage для вывода сообщения в комстроку. Но если чертеж неактивен, то возникает исключение. Возможно, есть какой-то другой способ, который позволит отправить сообщение в комстроку неактивного чертежа?
Название: Re: Как выполнить вывод сообщения в комстроку неактивного чертежа?
Отправлено: Александр Ривилис от 22-06-2017, 14:17:18
Но если чертеж неактивен, то возникает исключение.
Какое?
Название: Re: Как выполнить вывод сообщения в комстроку неактивного чертежа?
Отправлено: Дмитрий Загорулькин от 22-06-2017, 14:27:24
Цитировать
************** Текст исключения **************
Autodesk.AutoCAD.Runtime.Exception: eNotApplicable
   в AcMgUserInteraction.{ctor}(AcMgUserInteraction* , AcApDocument* pDoc, Boolean prompting)
   в Autodesk.AutoCAD.EditorInput.Editor.WriteMessage(String message) ...
Название: Re: Как выполнить вывод сообщения в комстроку неактивного чертежа?
Отправлено: Александр Ривилис от 22-06-2017, 14:32:59
Editor.WriteMessage - это обертка для acutPrintf из ObjectARX. Так вот эта функция не зависит от документа (вообще никак не связана с документом) и выводит всегда в активный документ. Не думаю, что можно пытаться выводить в неактивный документ.
Название: Re: Как выполнить вывод сообщения в комстроку неактивного чертежа?
Отправлено: Дмитрий Загорулькин от 22-06-2017, 14:37:59
А другого какого-нибудь метода нет? Наподобие Document.SendStringToExecute.
Название: Re: Как выполнить вывод сообщения в комстроку неактивного чертежа?
Отправлено: Александр Ривилис от 22-06-2017, 14:53:55
А другого какого-нибудь метода нет? Наподобие Document.SendStringToExecute.
Нет. Но я не понимаю зачем это тебе нужно. Можно запустить команду в неактивном документе, которая выведет то что надо тогда, когда этот документ станет активным. Или подписаться на событие активизации документа и при активизации его вывести всё, что накопил в буфере-строке. Это будет даже оптимальнее. Идея понятна?
Название: Re: Как выполнить вывод сообщения в комстроку неактивного чертежа?
Отправлено: Дмитрий Загорулькин от 22-06-2017, 15:09:29
Да, я в итоге к этому же и пришел - перенес всю логику в Application.DocumentManager.DocumentActivated. Но это немного обходной путь. Я подумал, что может быть есть более прямой, о котором я не знаю. Ну что же, отрицательный результат - тоже результат :)
Спасибо!