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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > сохранение в два пути параллельно

сохранение в два пути параллельно

Ответ
Поиск в этой теме
Непрочитано 11.11.2003, 14:47 #1
сохранение в два пути параллельно
D7f7G30
 
Регистрация: 11.11.2003
Сообщений: 3

Помогите найти плагин который делает такую штуку.

нажал SAVE, и сохранил тот файл с которым работаешь напрямую, а также сохранил зеркальную копию по пути мною указанному

ПАМАГИТЕ !!! срочно надо!
Просмотров: 8019
 
Непрочитано 11.11.2003, 17:26 Первое, что приходит на ум...
#2
Grinzaid

Архитектор
 
Регистрация: 14.10.2003
Израиль
Сообщений: 365
<phrase 1=


Первое, что приходит на ум - в опциях определить AutoSave с расширением DWG и закидывать его в определённую директорию (предварительно определив всё в тех же опциях). Помню, что в 12 акаде я определял путь для автомат. сохранения BAK.
Grinzaid вне форума  
 
Непрочитано 12.11.2003, 00:37
#3
SAV


 
Сообщений: n/a


Поддерживаю Grinzaid. Надо только установить в опциях Automatic Save и на вкладке Files указать директорию для автосохранения в пункте Automatic Save File Location. Однако утилиту написал (ну так попробовал, а она вдруг написалась). Она сохраняет файлы в виде "copy_of_"+ название исходного файла, в указанной директории.

Код:
[Выделить все]
(defun c:bsave (/ dwg_name dwg_path)
  (setvar "cmdecho" 0)
  (if (= (getvar "dwgtitled") 0)
    (progn
      (initdia)
      (command "_.save")
      );end progn
    );end if
  (setq dwg_name (getvar "dwgname"))
  (setq dwg_path (getvar "dwgprefix"))
  (command "qsave")
  (command "_.saveas" "2000" (strcat "C:\\Test Folder\\copy_of_" dwg_name) "Y")
  (command "_.saveas" "2000" (strcat dwg_path dwg_name) "Y")
  (princ)
  ); end bsave
1. Путь к фолдеру в котором будут сохраняться файлы, надо прописать в строчке: (command "_.saveas" "2000" (strcat "C:\\Test Folder\\copy_of_" dwg_name)). Именно так, через \\ ! Фолдер естественно надо предварительно создать.
2. Данный код надо скопировать в файл ACADDOC.LSP который находиться в Support и перегрузить AutoCAD.
3. Программа будет вызываться из командной строки bsave. Чтобы она работала при нажатии кнопочки с дискеткой, надо поменять в свойствах кнопки макрос ^C^C_qsave на ^C^C_bsave.
4. Если вы хотите наиболее изобретательно "поломать" AutoCAD еще сильнее, читайте ненаписанную книгу неизвестного автора Я. Неполещук "Visual LISP и как поломать AutoCAD".

[/b]
 
 
Непрочитано 12.11.2003, 00:57
#4
Perezz!!
Moderator

архитектор
 
Регистрация: 21.08.2003
Москва
Сообщений: 3,587


Круто.
Perezz!! вне форума  
 
Автор темы   Непрочитано 13.11.2003, 07:21
#5
D7f7G30


 
Регистрация: 11.11.2003
Сообщений: 3


я понял.
только у нас цельный проектный институт и у каждого юзера всё это провернуть сложновато.

пусь это будет типа *.lsp чтоб это подключить и желательно чтобы структура дерева сохранялась, а то у нас файлы носят имена "0001.dwg ... XXXX.dwg"
т.е. я работаю на сетевом диске в папке: "I:\27017\Л\..." а на моем жестком диске была бы папка "project", а в ней сохранялась структура начиная с "27017\Л\..." т.е. типа ЗЕРКАЛО как в КОМПАСе
D7f7G30 вне форума  
 
Непрочитано 13.11.2003, 14:33 Поправка.
#6
Grinzaid

Архитектор
 
Регистрация: 14.10.2003
Израиль
Сообщений: 365
<phrase 1=


Надо бы адрес сделать переменным. Не всё ж во времеменной папке хранить.
Grinzaid вне форума  
 
Непрочитано 13.11.2003, 18:41
#7
SAV


 
Сообщений: n/a


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

Я единственного не понимаю, почему не использовать стандартный AutoSave. Не устраивает, только то что не сохраняеться путь на исходный файл? Может продумать это организационно, и каждому проекту присваивать свой префикс, который должен присутствовать в названии файлов?

Сделать то что вы просите не сложно. И переделывать макрос на кнопке не надо, можно сделать другую кнопку, но будут ли ей все пользоваться?

Напишите, если нужно то сделаю как просите.
 
 
Непрочитано 13.11.2003, 21:00
#8
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Цитата:
Сообщение от SAV
И переделывать макрос на кнопке не надо, можно сделать другую кнопку, но будут ли ей все пользоваться?
Другую кнопку можно не делать.... Введут команду с клавиатуры - и все дела. А потом еще и шуметь будут, что не работает стстема.... Если делать, чтоб надежно, так надо отслеживать событие сохранения файла. Скорее всего на VBA.

>D7f7G30
А для чего это нужно, если не секрет? Банальное "резервное копирование" или что-то более замудреное?
vk вне форума  
 
Непрочитано 13.11.2003, 22:19
#9
SAV


 
Сообщений: n/a


Да точно, даже VBA не нужен, можно ведь через ActiveX воспользоваться событием BeginSave. Должно вроде работать (раньше этот Event не использовал), функция в листинге хоть и рабочая но вобще то полная чушь. Неправильный подход, спасибо за подсказку.
 
 
Непрочитано 13.11.2003, 23:35
#10
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Цитата:
Сообщение от SAV
... даже VBA не нужен, можно ведь через ActiveX воспользоваться событием BeginSave.....
Считается, что поддержка событий в VBA (а событие для него свое, родное) работает надежнее, чем реакторы в LISPе. Тема про напоминалку заблокированных слоев (на этом форуме) - тому пример.
vk вне форума  
 
Автор темы   Непрочитано 14.11.2003, 06:38
#11
D7f7G30


 
Регистрация: 11.11.2003
Сообщений: 3


Ok. объясняю ситуацию.

у нас на сервере диск "Project", он подключен у каждого юзера (150 чел.) на компе под одной литерой "I" и все работают напрямую с файлами на сервере.

у каждого проекта папка по номеру договора типа "23423", в ней находятся папки по именам отделов типа "Л", "ТИ", "АТВТ" и т.д.

во всех папках отделов (например пусть будет Л) хранятся файлы под именами 0001, 0002, ...

т.е. я работая сразу по нескольким объектам 23423, 9966 открываю файлы с одинаковыми именами но по разным путям.

и бывает что файлы пропадают ( по чьей-то вине. А т.к. проверка чертежей идет в электронном виде то можно запутаться в копиях одного и того-же файла на диске. Т.е. система работать сначала у себя на харде, а потом выкладывать на сервак посвоей сути не подходит.

Резюме. НУЖНО чтобы все юзера продолжали работать на серваке, а у них на компе дублировалась структура серверного диска "Project" и ВСЁ !

Народ. если напишете мне эту штуку то буду премного благодарен. И уверен что эта вещь будет полезна многим!
D7f7G30 вне форума  
 
Непрочитано 14.11.2003, 10:50
#12
SAV


 
Сообщений: n/a


Теперь, наконец все понятно.
 
 
Непрочитано 14.11.2003, 19:09
#13
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Не уверен, что все так просто. Создавая локальные копии, Вы имеете полные шансы
Цитата:
....запутаться в копиях одного и того-же файла на диске.
В данном случае мы имеем (тоесть, вы имеете)
Цитата:
... бывает что файлы пропадают по чьей-то вине...
И наверняка, не только файлы чертежей. В таком случае нужно ставить вопрос о сохранности архива. Об этом много уже говорено и похоже без специальных серверных решений обойтись трудновато. Если только вы не наймете сто пятьдесят первого человека, который только и занимался бы тем, что сравнивал копии файла на локальной машине и сетевой папке . Шутка, это можно делать и программно... Но! Если юзер (а расчитывать систему надо именно на глупого юзера) откроет копию файла на локальной машине а не на сетевом диске, как полагается, то другие юзеры даже и не узнают о том, что в файл будут вноситься какие-то изменения.... и то что он вобще открыт.....

Попробуйте покопаться в http://www.autocad.ru/cgi-bin/f1/board.cgi?p=008 кое что там есть по этой теме.
vk вне форума  
 
Непрочитано 17.11.2003, 15:30
#14
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,260


А если премерно так:
Код:
[Выделить все]
;Получаем полное имя текущего файла:
(setq F1 (findfile (getvar "dwgname")))
;возвратит что-то вроде "I:\\PATH\\FILENAME.DWG"
;Теперь меняем букву логического устройства:
(setq F2 (strcat "C" (substr F1 2)))
;Сохраняем в 2 пути:
(command "_save" "_saveas" F2)
Я только не помню: при таком сохранении создаются ли папки "на лету" при их отсутствии.
Иначе нужно разбить полное имя сохраняемого файла на подпапки и сперва создать их (командой "shell" к примеру или еще чем-нибудь).
Pilot вне форума  
 
Непрочитано 17.11.2003, 21:11
#15
Perezz!!
Moderator

архитектор
 
Регистрация: 21.08.2003
Москва
Сообщений: 3,587


А не проще ли запретить перемещение и удаление файлов на сервере? :roll:
Perezz!! вне форума  
 
Непрочитано 20.11.2003, 09:07
#16
Andi55


 
Сообщений: n/a


А зачем Акад мучить с двойным сейвом? Наверняка и Ексели и Ворды надо к этому же будет приучать, ведь проект это не только чертежи.

Решение: установите прогу-синхронизатор типа vu-brief (бесплатно-http://www.vu-brief.spb.ru) она Вам хоть раз в 30 секунд будет "зеркалировать" сетевую папку на Вашу локальную или наоборот (можно работать локально , а не не сервере), и плюсом ко всему будет бэкапить с нужной периодичностью в третье место. Эту прожку долго настраивать, зато быстро ехать.
 
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > сохранение в два пути параллельно

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

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