Как определить, в каком режиме находится программа

Автор Тема: Как определить, в каком режиме находится программа  (Прочитано 7644 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Борис_САвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 238
  • Карма: 3
Всем доброго времени суток.
Подскажите, пожалуйста, как узнать, в каком режиме находится программа: в режиме пространства модели или в режиме пространства листа?
Спасибо.

Отмечено как Решение Борис_С 20-05-2021, 20:02:55

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
В исходном коде MGDDBG есть соответствующая функция:
Код - C# [Выбрать]
  1. /// <summary>
  2. /// Is Paper Space active in the given database?
  3. /// </summary>
  4. /// <param name="db">Specific database to use</param>
  5. /// <returns></returns>
  6.  
  7. public static bool IsPaperSpace(Database db)
  8. {
  9.     Debug.Assert(db != null);
  10.     if (Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument == null)
  11.         return false;
  12.     if (db.TileMode)
  13.         return false;
  14.     Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
  15.     if (db.PaperSpaceVportId == ed.CurrentViewportObjectId)
  16.         return true;
  17.     return false;
  18. }
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Борис_САвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 238
  • Карма: 3
Спасибо, Саша.

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 738
Вроде бы, как-то давно мы тут на форуме обсуждали, что достаточно посмотреть свойство CurrentSpaceId и проверить, что оно соответствует (или нет) ObjectId модели (можно получить через SymbolUtilityServices). Но это надо проверять.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Вроде бы, как-то давно мы тут на форуме обсуждали, что достаточно посмотреть свойство CurrentSpaceId и проверить, что оно соответствует (или нет) ObjectId модели (можно получить через SymbolUtilityServices). Но это надо проверять.
Да. Это тоже работает почти во всех контекстах, кроме некоторых событий.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение