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

ADN Club => AutoCAD .NET API => Тема начата: Дмитрий Загорулькин от 27-10-2015, 22:28:51

Название: Программно изменить статус документа на "несохраненный".
Отправлено: Дмитрий Загорулькин от 27-10-2015, 22:28:51
Столкнулся с тем, что если в только что открытом чертеже произвести манипуляции с изменением ExtensionDictionary объектов, то статус чертежа не меняется на "несохраненный". Соответственно, если сразу же после этого чертеж закрыть, то не выскочит предупреждения с предложением сохранить чертеж и изменения могут быть легко утеряны.
Как программно это правильнее всего исправить? Понятно, что можно внести какие-нибудь незначительные изменения, которые повлияют на статус документа: переместить немного вид, выполнить небольшой зум и т.п. Но, может быть, есть какая-то переменная, которой нужно просто задать новое значение? Может кто-то уже решал подобную задачу?
Название: Re: Программно изменить статус документа на "несохраненный".
Отправлено: Александр Ривилис от 27-10-2015, 22:37:58
Провёл простой эксперимент. Поменял 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 (http://adn-cis.org/ustanovka-i-ochistka-priznaka-modifikaczii-dokumenta-v-.net.html)
Название: Re: Программно изменить статус документа на "несохраненный".
Отправлено: Дмитрий Загорулькин от 27-10-2015, 23:37:08
Да, работает! :)
Спасибо!
Название: Re: Программно изменить статус документа на "несохраненный".
Отправлено: Дмитрий Загорулькин от 28-10-2015, 14:43:05
Ох... мне как-то первый вариант больше нравится :) Хотя, конечно, если нужно обратное действие выполнить, он не подойдет. Действительно, жаль, что нельзя 2 решения отметить. Или может Вы добавите ссылку на предыдущее сообщение в сообщение, отмеченное как решение?
Название: Re: Программно изменить статус документа на "несохраненный".
Отправлено: Александр Ривилис от 28-10-2015, 14:48:19
Или может Вы добавите ссылку на предыдущее сообщение в сообщение, отмеченное как решение?
Объединил оба моих сообщения.