Сообщество программистов Autodesk в СНГ
ADN Club => ObjectARX => Тема начата: Baton от 13-03-2015, 01:06:47
-
Привет всем форумчанам!
Я здесь впервые. Надеюсь, что поможете.
Имеется ObectARX приложение. Приложение работает начиная с Автокад 2004 и по Автокад 2014. При переходах на разные ObjectARX версии были разные нюансы, но все они успешно решались и приложение работало без проблем. Под ObjectARX 2015 тоже все перекомпилировал, по ходу справился с мелкими новшествами. Получил готовый ARX файл.
Далее действия такие:
- Открываю Автокад 2015. Прописываю в настройках путь к файлам программы, загружаю мой файл CUIX, далее через файл MNL подгружается автоматически файл ARX. Закрываю Автокад, чтобы сохранить настройки.
- Далее пытаюсь открыть Автокад 2015. При загрузке Автокад намертво зависает. Снимается только через диспетчер задач.
- Теперь интересное. Открываю Автокад через открытие файла DWG. Все открывается и работает.
- Далее. Поработав в файле, файл закрываю, файл нормально сохраняется, все результаты работы программы тоже. Далее пытаюсь выйти из Автокада - Автокад опять зависает намертво.
Что-то я, видимо, упустил при прочтении мигрэйшн гайд :(.
Заранее спасибо за помощь.
-
Приветствую на форуме!
Что-то я, видимо, упустил при прочтении мигрэйшн гайд
Ну это гадание на кофейной гуще. Самое главное отличие - это режим FIBERLESS и возможность curDoc() == NULL. Ну и если подвисает при завершении AutoCAD, то смотри что происходит в On_kUnloadAppMsg. Впрочем возможно к этому моменту уже всё испорчено...
-
Перечитал твой вопрос. Пришел к выводу, что программа не учитывает возможность curDoc() == NULL. Это как раз может приводить к ошибкам при запуске AutoCAD без чертежа и закрытии последнего открытого чертежа.
-
Александр, спасибо за ответ!
Попробую сегодня поправить код. Я использую в программе контекст текущего документа и учитываю момент переключения между документами. Проверки при загрузке на curDoc() == NULL у меня нет, так как раньше это всегда прокатывало. Поправлю код. По итогам отпишусь. Может, если будет правильный вход, то будет и правильный выход :).
-
Во всех моих приложениях нашел обращения к текущему документу и вставил проверки указателя документа на NULL. В основном это было при инициализации моих программ, в методах класса AcApDocManagerReactor - documentToBeActivated, documentCreated, documentToBeDestroyed, а так же в методах моих классов, которые контактировали с методами класса AcApDocManagerReactor. После этого все проблемы пропали.
Спасибо за помощь!!! Каждая версия Автокада приносит свои сюрпризы.
-
Спасибо за помощь!!!
Пожалуйста. А что гласит моя подпись по поводу кнопки Решение? ;)
-
Простите за тупость. На каком посте нажимать на "решение". На моем последнем? Я сам не смог догадаться.
-
На каком посте нажимать на "решение". На моем последнем?
Ну это решать тебе. Мой пост подсказывает идею, а твой конкретизирует решение.