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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как отключить автосохранение для отдельно взятого файла

Как отключить автосохранение для отдельно взятого файла

Ответ
Поиск в этой теме
Непрочитано 22.10.2016, 23:51 #1
Как отключить автосохранение для отдельно взятого файла
kp+
 
идущий по граблям
 
Днепройт
Регистрация: 26.05.2005
Сообщений: 4,855

Можно ли отключить автосохранение для отдельно взятого файла, но оставить для других, открытых в данном сеансе работы?
Поясню, для чего это нужно. Например, разрабатывается/редактируется один чертеж (назовем Чертеж1), но периодически надо подсматривать в другой чертеж (Чертеж2) и копировать из него некоторые фрагменты. Изменения по сути в Чертеж2 не вносятся, но перемещения вида и операции копирования в буфер Акад приравнивает к редактированию. Соответственно, для Чертежа2 в заданные промежутки времени выполняется автосохранение. И если Чертеж2 "тяжелый", его автосохранения дают приличные задержки в самый неподходящий момент. Особенно напрягает, если при этом Чертеж1 достаточно легкий и его автосохранения проходят почти незаметно.

Итак, можно ли отключить автосохранение для Чертежа2, но оставить для Чертежа1?

PS Уточню: Чертеж2 не является базой стандартных элементов или чем-то в этом роде.
__________________
Одно меня лишь радует - я это вижу сам! (С)
Просмотров: 3404
 
Непрочитано 23.10.2016, 01:06
| 1 #2
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,202


kp+, была у меня когда-то похожая ситуация, поступил по простому - отключил автосохранение и при работе в чертеже приучился регулярно сохраняться ручками (Ctrl+S), потом повесил ._qsave на F4 и в шаблоне Ворда тоже создал макрос сохранения документа по нажатию F4.
С тех пор эта привычка стала автоматизмом - в процессе работы постоянно F4.
Nike вне форума  
 
Непрочитано 23.10.2016, 01:57
#3
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 9,801


например, как вариант - отслеживать переключение документов (изменение активного документа). И сбрасывать в нуль системную переменную SAVETIME при переходе на те чертежи, для которых не нужно автосохранение. Для других чертежей восстанавливать значение SAVETIME в исходное. Это программный путь, естественно.
Сергей812 вне форума  
 
Непрочитано 25.10.2016, 14:43
#4
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,621


Сергей812, поддерживаю такой вариант, тем более, что он довольно легко осуществим посредством лиспа, однако, надо знать заранее и точно, в каких файлах автосохранение отключать, а в каких - нет. Или при открытии каждого чертежа всегда спрашивать об этом? Или при открытии чертежа по умолчанию включать, а при вводе некой команды - отключать? Но поскольку эта переменная хранится в реестре, есть подозрения, что на практике может быть такое, что при работе в чертеже с включенным автосохранением и последующим переключением на другой чертеж, возможно, будет происходить-таки автосохранение с подвисанием, а затем его отключение. Так что практическая польза такого подхода сомнительна, но надо пробовать.
skkkk вне форума  
 
Непрочитано 25.10.2016, 14:48
#5
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,663


По-моему, автосохранение выполняется независимо от того, редактируется ли чертеж или нет.
Profan вне форума  
 
Непрочитано 25.10.2016, 15:10
#6
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 9,801


Ход моих умозаключений и наблюдений:
1. Автосохранение работает только для активного чертежа?! (это логично, пользователь может вносить изменения только в текущий активный чертеж).

2. При системной переменной SAVETIME=0, и установке ее в активное состояние (период автосохранения в мин), если уже вышел период с предыдущего автосохранения - сразу вызывается новое автосохранение. Исходя из этого, должно SAVETIME=0 при старте акада (отключено), и сбрасываться по факту деактивации чертежа. А по факту активации чертежа, если данного файла нет в списке запрещенных для автосохранения - то тогда "взводиться" автосохранение. Т.е. на другой чертеж должно происходить переключение только при отключенном автосохранении.

3. Как, например, определять - нужно автосохранять чертеж или нет:
3.1. Пользовательское свойство чертежа - если отсутствует, то автосохранение активно.
3.2. Текстовой или иной файл данных, где хранятся полные имени файлов, не подлежащих автосохранению.
И есть две команды (EnableAutoSave и DisableAutoSave) или команда-вопрос "EnableAutoSave[y|n]?" (это не существенно), которые оперируют с этим свойством или списком.

4. При открытии чертежа должно выдаваться предупреждение в виде Alert окна, что чертеж в списке отключенных по автосохранению. Потом можно выводить подобное предупреждение при активации "отключенного" чертежа в комстроку - это уже удобство пользования.

p.s. я бы не занимался жонглированием системной переменной, а скорее просто написал бы свою реализацию автосохранения, отключив стандартную. Заодно сделать с нормальными именами, датой и временем, гибким месторасположением и т.п.

----- добавлено через ~36 мин. -----
И еще обратите внимание на переменную ISavePercent.
Сергей812 вне форума  
 
Непрочитано 25.10.2016, 15:56
1 | #7
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,621


Сергей812, я рассудил примерно также.
Вот что у меня получилось в первом приближении (применять с осторожностью, ибо во-первых, это его величество сохранение, а во-вторых, ибо реакторы):
Код:
[Выделить все]
 (vl-load-com) 
(setq Cmnd_Reac 	
	(vlr-docmanager-reactor nil
		(list '(:VLR-documentToBeActivated . documentToBeActivated))
	)
)
(defun documentToBeActivated (reac data / )
	(cond
	  (	*ASOFF* 
		(setvar "SAVETIME" 0)
		(princ "\nАвтосохранение отключено")
	  )
	  (	T
		(setvar "SAVETIME" 10)
		(princ (strcat "\nАвтосохранение включено, интервал " (vl-princ-to-string (getvar "SAVETIME")) " мин."))
	  )
	)	
	(princ)
)
(defun C:ASOFF (/)
	(setq *ASOFF* T)
)
(defun C:ASON (/)
	(setq *ASOFF* nil)
	(setvar "SAVETIME" 10)
)
(princ)
В 14-й и 25-й строках кода вместо "10" записываем свое значение. Добавляем код в автозагрузку. В том чертеже, который не надо "автосохранять", вводим команду ASOFF (можно создать кнопку на панели/в ленте или назначить горячие клавиши). При этом в чертеж на время сеанса добавляется глобальная переменная *ASOFF*. При активации данного чертежа SAVETIME будет обнуляться, а при активации других - возвращаться ее принятое в коде значение. Также, если последним закрытым в сеансе был чертеж с отключенной SAVETIME, при открытии нового сеанса переменная восстановит значение.
Остается вопрос: что если при частом переключении между чертежами автосохранения не будет происходить вовсе по той причине, что при активации чертежа и назначении переменной установленного времени, это время начнет тикать только с момента активации? То есть при более частом, чем раз в 10 минут переключении эти 10 минут не пройдут никогда. Надо это проверять. Возможно, стоит открывать "неавтосохраняемый" чертеж в отдельном сеансе, запущенном с ярлыка, и открывать нужный файл через _OPEN. В этом случае в каждом сеансе переменная будет иметь свое значение.

А возникшую у меня тоже идею со списком запрещенных для автосохранения чертежей я сразу отмел, может и зря - возможно, автор хочет "тягать" куски из некоего строго определенного файла-шаблона. Тогда код будет таким:
Код:
[Выделить все]
 (setq Cmnd_Reac 	
	(vlr-docmanager-reactor nil
		(list '(:VLR-documentToBeActivated . documentToBeActivated))
	)
)
(defun documentToBeActivated (reac data / )
	(cond
	  (	(= (getvar "DWGNAME") "Чертеж1") 
		(setvar "SAVETIME" 0)
		(princ "\nАвтосохранение отключено")
	  )
	  (	T
		(setvar "SAVETIME" 10)
		(princ (strcat "\nАвтосохранение включено, интервал " (vl-princ-to-string (getvar "SAVETIME")) " мин."))
	  )
	)	
	(princ)
)
В 8-й строке пишем название файла, в 13-й - значение интервала автосохранения. И опять же - рекомендую открывать этот шаблон в отдельном сеансе.
Сразу оба кода добавить не выйдет - сработает последний загруженный. Если надо будет объединить их функционал, это нетрудно будет сделать.

Последний раз редактировалось skkkk, 25.10.2016 в 16:03.
skkkk вне форума  
 
Непрочитано 25.10.2016, 15:57
#8
KronSerg

Вода - моя работа
 
Регистрация: 10.11.2009
Санкт-Петербург
Сообщений: 3,642


Открыть чертёж 2 в новом процессе автокада и отключить в нём автосохранение.
__________________
Нерешаемых проблем не бывает.
KronSerg вне форума  
 
Непрочитано 25.10.2016, 16:07
#9
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,621


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
И еще обратите внимание на переменную ISavePercent.
А при чем тут она? Не понимаю. Свои выкладки из понимания всех этих переменных, связанных с сохранением, я приводил тут здесь.

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от KronSerg Посмотреть сообщение
Открыть чертёж 2 в новом процессе автокада и отключить в нём автосохранение.
А потом, если закрыть его последним, то оно больше и не включится. Я тоже за такой подход, но с применением реактора, который вернет переменную на место.
skkkk вне форума  
 
Непрочитано 25.10.2016, 16:32
#10
KronSerg

Вода - моя работа
 
Регистрация: 10.11.2009
Санкт-Петербург
Сообщений: 3,642


Цитата:
Сообщение от skkkk Посмотреть сообщение
А потом, если закрыть его последним, то оно больше и не включится.
Если боишься не уследить, можно запилить автовключение автосейва при (авто)старте
__________________
Нерешаемых проблем не бывает.
KronSerg вне форума  
 
Автор темы   Непрочитано 25.10.2016, 16:47
#11
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Днепройт
Сообщений: 4,855


Цитата:
Сообщение от skkkk Посмотреть сообщение
Вот что у меня получилось в первом приближении (применять с осторожностью, ибо во-первых, это его величество сохранение, а во-вторых, ибо реакторы)
Ух ты елки-палки...
буду пробовать...
__________________
Одно меня лишь радует - я это вижу сам! (С)
kp+ вне форума  
 
Непрочитано 25.10.2016, 17:13
#12
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 9,801


В свое время Бушман Андрей писал надстройку для сохранения бэкапа dwg. Вот что-то подобное и имел в виду в качестве альтернативного автосохранения, дополнив таймером и циклом опроса открытых чертежей в менеджере чертежей.
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как отключить автосохранение для отдельно взятого файла

Vetcad
Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отключить создание нового файла при запуске? И можно ли перенести отдельную команду из MechaniCS перенести на чистый AutoCAD? Immortal_6666 AutoCAD 6 27.08.2019 13:46
Lisp. Проблема после копирование стиля несущего элемента (ADT) из файла молодой человек LISP 1 02.05.2011 22:56
Как присоединить к одному чертежу (из 1ого файла) кусок продолжение (из 2ого)? star282 AutoCAD 13 17.03.2011 12:13
Как отключить автосохранение при закрытии файла? fenix72 AutoCAD 2 25.10.2010 11:24
Частичное открытие файла - не активно при открытии файла ADik AutoCAD 4 22.06.2006 07:35