Программно изменить статус документа на "несохраненный".

Автор Тема: Программно изменить статус документа на "несохраненный".  (Прочитано 5408 раз)

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

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Столкнулся с тем, что если в только что открытом чертеже произвести манипуляции с изменением ExtensionDictionary объектов, то статус чертежа не меняется на "несохраненный". Соответственно, если сразу же после этого чертеж закрыть, то не выскочит предупреждения с предложением сохранить чертеж и изменения могут быть легко утеряны.
Как программно это правильнее всего исправить? Понятно, что можно внести какие-нибудь незначительные изменения, которые повлияют на статус документа: переместить немного вид, выполнить небольшой зум и т.п. Но, может быть, есть какая-то переменная, которой нужно просто задать новое значение? Может кто-то уже решал подобную задачу?

Отмечено как Решение Дмитрий Загорулькин 27-10-2015, 23:37:11

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Провёл простой эксперимент. Поменял USERI1 на 1, затем восстановил предыдущее значение. Чертеж считается изменённым, т.к. эта системная переменная хранится в чертеже: http://knowledge.autodesk.com/support/autocad/learn-explore/caas/CloudHelp/cloudhelp/2016/ENU/AutoCAD-Core/files/GUID-BDC0BB08-FCDD-4E4F-AC3F-407696911F8B-htm.html
Можно менять так:
Код - C# [Выбрать]
  1. Database db = Application.DocumentManager.MdiActiveDocument.Database;
  2. int val = db.Useri1;
  3. db.Useri1 +=1;
  4. db.Useri1 = val;

А вот еще один вариант. Хотя и не такой лаконичный, но более универсальный. Позволяет не только установить признак модифицированности, но и сбросить его если он был уже установлен: Установка и очистка признака модификации документа в .NET
« Последнее редактирование: 28-10-2015, 14:47:30 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Да, работает! :)
Спасибо!

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Ох... мне как-то первый вариант больше нравится :) Хотя, конечно, если нужно обратное действие выполнить, он не подойдет. Действительно, жаль, что нельзя 2 решения отметить. Или может Вы добавите ссылку на предыдущее сообщение в сообщение, отмеченное как решение?

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Или может Вы добавите ссылку на предыдущее сообщение в сообщение, отмеченное как решение?
Объединил оба моих сообщения.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение