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

ADN Club => ObjectARX => Тема начата: Baton от 13-03-2015, 01:06:47

Название: Зависимость загрузки Автокад 2015 от ObjectARX приложения.
Отправлено: Baton от 13-03-2015, 01:06:47
Привет всем форумчанам!
Я здесь впервые. Надеюсь, что поможете.

Имеется ObectARX приложение. Приложение работает начиная с Автокад 2004 и по Автокад 2014. При переходах на разные ObjectARX версии были разные нюансы, но все они успешно решались и приложение работало без проблем. Под ObjectARX 2015 тоже все перекомпилировал, по ходу справился с мелкими новшествами. Получил готовый ARX файл.

Далее действия такие:
- Открываю Автокад 2015. Прописываю в настройках путь к файлам программы, загружаю мой файл CUIX, далее через файл MNL подгружается автоматически файл ARX. Закрываю Автокад, чтобы сохранить настройки.
- Далее пытаюсь открыть Автокад 2015. При загрузке Автокад намертво зависает. Снимается только через диспетчер задач.
- Теперь интересное. Открываю Автокад через открытие файла DWG. Все открывается и работает.
- Далее. Поработав в файле, файл закрываю, файл нормально сохраняется, все результаты работы программы тоже. Далее пытаюсь выйти из Автокада - Автокад опять зависает намертво.

Что-то я, видимо, упустил при прочтении мигрэйшн гайд :(.
Заранее спасибо за помощь.
Название: Re: Зависимость загрузки Автокад 2015 от ObjectARX приложения.
Отправлено: Александр Ривилис от 13-03-2015, 01:14:50
Приветствую на форуме!
Что-то я, видимо, упустил при прочтении мигрэйшн гайд
Ну это гадание на кофейной гуще. Самое главное отличие - это режим FIBERLESS и возможность curDoc() == NULL. Ну и если подвисает при завершении AutoCAD, то смотри что происходит в On_kUnloadAppMsg. Впрочем возможно к этому моменту уже всё испорчено...
Название: Re: Зависимость загрузки Автокад 2015 от ObjectARX приложения.
Отправлено: Александр Ривилис от 13-03-2015, 01:35:31
Перечитал твой вопрос. Пришел к выводу, что программа не учитывает возможность curDoc() == NULL. Это как раз может приводить к ошибкам при запуске AutoCAD без чертежа и закрытии последнего открытого чертежа.
Название: Re: Зависимость загрузки Автокад 2015 от ObjectARX приложения.
Отправлено: Baton от 13-03-2015, 09:28:58
Александр, спасибо за ответ!
Попробую сегодня поправить код. Я использую в программе контекст текущего документа и учитываю момент переключения между документами. Проверки при загрузке на curDoc() == NULL у меня нет, так как раньше это всегда прокатывало. Поправлю код. По итогам отпишусь. Может, если будет правильный вход, то будет и правильный выход  :).
Название: Re: Зависимость загрузки Автокад 2015 от ObjectARX приложения.
Отправлено: Baton от 16-03-2015, 00:40:12
Во всех моих приложениях нашел обращения к текущему документу и вставил проверки указателя документа на NULL. В основном это было при инициализации моих программ, в методах класса AcApDocManagerReactor - documentToBeActivated, documentCreated, documentToBeDestroyed, а так же в методах моих классов, которые контактировали с методами класса AcApDocManagerReactor. После этого все проблемы пропали.
Спасибо за помощь!!! Каждая версия Автокада приносит свои сюрпризы.
Название: Re: Зависимость загрузки Автокад 2015 от ObjectARX приложения.
Отправлено: Александр Ривилис от 16-03-2015, 01:04:16
Спасибо за помощь!!!
Пожалуйста. А что гласит моя подпись по поводу кнопки Решение? ;)
Название: Re: Зависимость загрузки Автокад 2015 от ObjectARX приложения.
Отправлено: Baton от 16-03-2015, 01:23:48
Простите за тупость. На каком посте нажимать на "решение". На моем последнем? Я сам не смог догадаться.
Название: Re: Зависимость загрузки Автокад 2015 от ObjectARX приложения.
Отправлено: Александр Ривилис от 16-03-2015, 01:33:01
На каком посте нажимать на "решение". На моем последнем?
Ну это решать тебе. Мой пост подсказывает идею, а твой конкретизирует решение.