Реклама i
Стань нашим партнером - зарабатывай с нами!
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Пометить документ как "изменённый", при отключенном UNDO (Object ARX)

Пометить документ как "изменённый", при отключенном UNDO (Object ARX)

Ответ
Поиск в этой теме
Непрочитано 03.06.2013, 09:02 #1
Пометить документ как "изменённый", при отключенном UNDO (Object ARX)
Glam Troll
 
прохраммист ObjectArx
 
Регистрация: 01.11.2010
Сообщений: 40

Из соображений удобства и эффективности было отключено занесение команд в стек UNDO. Всё прекрасно работает, но, если не выполняется никаких других команд, кроме команд моего ARX-приложения, то считается, что никаких изменений в документе не произошло и изменения не сохраняются.
Т.к. выполняемые команды немодальны, приходится лочить документ вручную, через acDocManager->lockDocument. Для отключения записей UNDO использовал команду disableUndoRecording для БД и каждого объекта. Так же ставил флаг ACRX_CMD_NO_UNDO_MARKER (одного флага было недостаточно).
Если чуть сдвинуть или повернуть чертёж или делать "Save as", то всё корректно сохраняется. Т.е. мне нужно как-то пометить документ, что в нём произошли изменения. Но все мои ARX-объекты работают без UNDO и не могут пометить объект.
Может быть есть какой-то флаг о модификации документа, который можно программно установить?
Просмотров: 3296
 
Непрочитано 03.06.2013, 13:53
#2
Vov.Ka


 
Регистрация: 21.07.2008
Луцьк
Сообщений: 179


попробуй системную переменную DBMOD
для лиспа она read-only
может на ObjectArx можно ее поменять?
Vov.Ka вне форума  
 
Автор темы   Непрочитано 03.06.2013, 14:26
#3
Glam Troll

прохраммист ObjectArx
 
Регистрация: 01.11.2010
Сообщений: 40


Vov.Ka, Спасибо, попробую. В ARX есть метод downgradeDocOpen, видимо то же самое, что и DBMOD делает.
Glam Troll вне форума  
 
Непрочитано 03.06.2013, 15:57
#4
Владимир.

Проектирую
 
Регистрация: 10.01.2005
Сообщений: 3,736


Цитата:
Сообщение от Glam Troll Посмотреть сообщение
Т.е. мне нужно как-то пометить документ, что в нём произошли изменения
Может просто сохранить?
Владимир. вне форума  
 
Автор темы   Непрочитано 03.06.2013, 16:33
#5
Glam Troll

прохраммист ObjectArx
 
Регистрация: 01.11.2010
Сообщений: 40


Я не могу выполнять сохранение после каждой из (сотен) команд, при том, что документ может достигать сотен мегабайт и, даже, гигабайт...
Glam Troll вне форума  
 
Непрочитано 03.06.2013, 16:52
#6
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,408
Отправить сообщение для Александр Ривилис с помощью Skype™


Следующая недокументированная функция должна помочь:
Код:
[Выделить все]
 long __cdecl acdbSetDbmod(class AcDbDatabase *db, long newDbmod);
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 03.06.2013, 17:11
#7
Glam Troll

прохраммист ObjectArx
 
Регистрация: 01.11.2010
Сообщений: 40


Александр Ривилис, Спасибо большое.
А может есть смысл получить доступ к MFC CDocument и в нём пометить? Программа с семью версиями автокада работает (на данный момент) и боязно недокументированные функции использовать.
Glam Troll вне форума  
 
Непрочитано 03.06.2013, 17:32
#8
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,408
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Glam Troll Посмотреть сообщение
А может есть смысл получить доступ к MFC CDocument и в нём пометить?
Как ты себе это представляешь?
Цитата:
Сообщение от Glam Troll Посмотреть сообщение
Программа с семью версиями автокада работает (на данный момент) и боязно недокументированные функции использовать.
Эта функция была в AutoCAD 2000 и есть в AutoCAD 2014. Думаю что и дальше никуда не исчезнет.
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 03.06.2013, 17:40
#9
Glam Troll

прохраммист ObjectArx
 
Регистрация: 01.11.2010
Сообщений: 40


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Как ты себе это представляешь?
Используя метод CDocument::SetModifiedFlag . MFC документ я уже получать умею (не помню как), чтобы дополнительные окна к каду прикрутить.
Glam Troll вне форума  
 
Непрочитано 03.06.2013, 17:47
1 | #10
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,408
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Glam Troll Посмотреть сообщение
Используя метод CDocument::SetModifiedFlag .
Можешь попробовать, хотя я не уверен, что AutoCAD вообще использует этот флаг.
P.S.: В плюс к моему предложению по использованию acdbSetDbmod - это рекомендация от ADN DevHelp и ADN DevTech: http://adndevblog.typepad.com/autoca...as-dialog.html

Последний раз редактировалось Александр Ривилис, 03.06.2013 в 18:06.
Александр Ривилис вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Пометить документ как "изменённый", при отключенном UNDO (Object ARX)

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AutoCAD 2012 zenon AutoCAD 168 08.04.2013 16:01
Express Tools Bugs ( Ошибки Express Tools ) VVA Программирование 49 02.02.2012 20:35
Создание копии объекта Sleekka Программирование 2 10.10.2011 11:47
Программа для построения аксонометрии. Несколько вопросов. Zaghim Программирование 5 03.06.2011 19:29
Помогите исправить программу под 2010 версию Irenaz Программирование 52 18.02.2010 16:06