|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
11.03.2016, 10:54 | #1 | |
Почему autocad спрашивает сохранить ли файл после зуммирования (редактирования не было)?
Регистрация: 10.09.2007
Сообщений: 10,592
|
||
Просмотров: 4683
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Потому что команды панорамирования и зуммирования вносят изменения в файл. На форуме вопрос поднимался, насколько я помню, отказаться от такого поведения невозможно и придется мириться.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Алексей, чисто гипотетически: нельзя разве создать реактор, который при запросе закрытия возьмет да и отменит все зумы и паны, и если кроме них ничего не было, то закроет файл без сохранения?
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
ИМХО нереально: количество выполненных операций может превышать количество, установленное через UNDOCTL. Была у меня в свое время идея обрабатывать dbmod (http://autolisp.ru/2011/12/21/dbmod-proceed/), но попытки нормальной эксплуатации провалились: AutoCAD 2008/2009/2010 валился когда ему захочется (я пробовал использовать этот механизм для старта обработки документа; как оно будет себя вести внутри командных реакторов - тайна). Хочешь - можешь попробовать сам прорисовать реакторы на команды _.pan, _.zoom и изменение системных переменных tilemode и ctab. Я сейчас не смогу это сделать, на работе поиграться не получается.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Цитата:
Это-то ясно, что он спросит о сохранении, даже если отменить все. Просто закрывать надо по-хитрому . |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Попробовал два варианта кода:
Код:
Код:
Потестировал по-быстрому на ACAD2016x64Eng+SP1. Оба варианта в таком виде не обрабатывают движение колеса мыши. При этом, если руками вбить в ком.строку (acad-push-dbmod), потом отзуммировать как хочется, снова вбить руками (acad-pop-dbmod), то все работает "как надо". Ковыряться дальше сейчас нет ни малейшей возможности
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Я не пробовал, наверняка можно, заморочившись, это сделать.
Вопрос закрытия файлов программно поднимался в этих темах (там же указаны и "хитрые" методы): Закрытие файла без сохранения как закрыть файл из лиспа Мои макрокоманды (начиная с #48) Что я могу на данный момент подытожить: 1. Через AutoLISP или ActiveX можно закрыть (в т. ч. без сохранения) только неактивный чертеж либо все неактивные чертежи. 2. Закрыть без сохранения активный чертеж можно одним из "хитрых" способов, которые закрывают чертеж посредством обращения к (command). Пример - #20 из второй ссылки - создает временный слой, чтоб убедиться, что изменения были, и закрывает без сохранения изменений. Потому как, если бы изменений не было, то этот код срабатывал бы некорректно. Возможно, тут правильнее было бы обработать этот момент через переменную DBMOD, но имеем то, что имеем, и это работает. Каким-то образом именно при закрытии через (command) подавляются диалоговые окна. Похожее поведение наблюдается и в попытках без диалога перейти к контекстному редактированию внешней ссылки или блока. 3. Один из хитрых методов требует установленного VBA-enabler'a, который есть уже далеко не у всех. Этот метод представлен в #18 из второй ссылки. 4. Чтобы заполучить кнопку на панели инструментов на закрытие всех чертежей без запроса и без сохранения, нужно выполнить пункты 1 и 2 в лиспе и повесить этот лисп на кнопку через адаптацию. 5. Если хочется закрывать все чертежи без сохранения стандартной кнопкой "Закрыть" Автокада (или Windows?) , то другого способа, кроме как создавать командный реактор на закрытие и закрывать файл без сохранения до вывода диалогового окна - я не вижу. Однако из-под реактора запустить (command) нельзя - оно и понятно: обходим это "нельзя" через vla-SendCommand, назначаем на команду "закрыть" реакцию "закрыть" - получаем бесконечный цикл закрытия и срабатывания реактора на самого себя со скорым зависанием навсегда (до жесткого ресета). 6. Гипотетически, если на закрытие поставить реакцию в виде запуска из-под vla-SendCommand vba-модуля, то может сработать, но проверить не могу, поскольку VBA-enabler'a нет. Приложу код таким, как я это вижу в теории, можете попробовать на свой страх и риск: Код:
Код:
|
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
0. Сохранить всю работу за день.
1. Как обычно - сохранить код (без номеров строк) в файл с расширением .lsp. 2. В начале кода добавить (vl-load-com) 3. Открыть новый сеанс Автокада 4. Загрузить сохраненный lsp-файл в Автокад. Можно простым перетаскиванием из папки в область чертежа-модели. 5. Покрутить колесо мыши - изменить вид чертежа. 6. Попробовать закрыть. 7. Если появилось окошко с надписью о перехвате, то закрыть Автокад, заменить (не добавить, а именно заменить) десятую строку из первого кода в посте #15 на предложенную ниже в том же посте. 8. Повторить п.п. 3, 4, 5 и 6. Если чертеж закроется без сохранения и без лишних вопросов (конечно, если установлен VBA-enabler) - значить повезло и задача решена. А если нет - мои мысли пока на этом заканчиваются. Интересно, а что если запилить реактор, который при открытии документа будет его сразу же закрывать, да и добавить это все дело в автозагрузку? Вылечить можно будет только удалением файла с этим кодом? ----- добавлено через ~3 мин. ----- Nike, опять же, если установлен VBA-enabler |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Что читают инженеры | motor-serg | Разное | 2173 | 03.04.2024 16:08 |
Разработка ПОС, искусство проектирования | Tyhig | Технология и организация строительства | 117 | 25.11.2021 17:38 |
запуск программы из AutoCADа | kminas | Программирование | 19 | 15.06.2012 13:42 |
Почему после печати в файл чертёж имеет очень тусклые линии? | Genesis | AutoCAD | 8 | 11.12.2011 01:37 |
не получается в Autocad 2009 сохранить файл созданный в Autocad 2008 | mr.beginner | AutoCAD | 4 | 10.12.2010 20:11 |