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

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

Команда _purge

Ответ
Поиск в этой теме
Непрочитано 21.07.2004, 05:42 #1
Команда _purge
Влад
 
Инженер-конструктор
 
Новосибирск
Регистрация: 30.08.2003
Сообщений: 76

Имеется куча автокадовских файлов с различными проектами, но все файлы очень сильно замусорены. Можно ли как то их почистить и уменьшить объем не открывая все файлы по одному ( т.к. файлов около 200 где то) а както пакетно их обработать командой _purge
Просмотров: 5253
 
Непрочитано 21.07.2004, 09:28
#2
kos

LISP-программист
 
Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238


Я бы написал LISP'ик, который:
1. прчитал бы список dwg-файлов в требуемой папке.
2. последовательно, по этому списку открывал бы каждый из этих dwg.
3. пургенил бы его.
4. сохранял (лучше в новую папку).
__________________
Там все есть для счастья - меня там только нет.
Так это значит, что я там - буду!
kos вне форума  
 
Непрочитано 21.07.2004, 17:18
#3
Torino


 
Регистрация: 21.08.2003
Штаб
Сообщений: 943
<phrase 1=


Есть утилита ScriptPro, которая позволяет примениьт один и тот же скрипт ко множеству чертежей.
Пишешь скрипт по "опургениванию" одного файла и применяешь его на 200.
Torino вне форума  
 
Непрочитано 21.07.2004, 18:05
#4
vk

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


Со скриптом это проще. При желании можно приличным текстовым редактором его размножить и вписать нужные имена файлов. А получить имена можно также в текстовый файл командой dir > list.txt (в командной строке винды)
vk вне форума  
 
Непрочитано 22.07.2004, 15:12
#5
kos

LISP-программист
 
Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238


Во, примерно так...
Код:
[Выделить все]
(defun dir-purge (str:dirName / int:n lst:dwgFiles vla:dwg)
  ;; Читаем список dwg-файлов в указанной папке
  (setq lst:dwgFiles (vl-directory-files str:dirName "*.dwg" 1))
  (setq int:n 0)
  ;; Открываем по списку эти файлы
  (foreach a lst:dwgFiles
    ;; Открыть файл
    (setq vla:dwg (vla-open (vla-get-documents (vlax-get-acad-object))
			    (strcat str:dirName (vl-string-subst "" ".DWG" (strcase a)))
		  ) ;_  vla-open
    ) ;_  setq
    ;; Пургеним...
    (vla-purgeAll vla:dwg)
    ;; Сохраняем...
    (vla-save vla:dwg)
    ;; Закрываем...
    (vla-close vla:dwg)
    (setq int:n (1+ int:n))
  ) ;_  foreach
  (alert (strcat "Обработано " (itoa int:n) " файлов."))
  (prin1)
) ;_  defun
Сильно не ругайте, писано на колене за пару минут без проверок и ты ды.
__________________
Там все есть для счастья - меня там только нет.
Так это значит, что я там - буду!
kos вне форума  
 
Непрочитано 22.07.2004, 17:11
#6
plaz

Проектирование обустройства нефтяных месторождений
 
Регистрация: 28.08.2003
Самара
Сообщений: 352


Я смотрю все больше и больше людей переходят на VisualLisp. У него на столько больше преимуществ?
plaz вне форума  
 
Непрочитано 22.07.2004, 17:45
#7
vk

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


>kos
Красиво!!!

>plaz
Загляни в файл ...Help\acad_dev.chm -> AutoLISP Reference -> V Functions. Там 95% функций относятся к VisualLisp. Плюс возможность (используя эти функции) влезть прямиком в другие приложения (в Word или Excel, например) посредством COM технологии. Да и внутри АКАДа можно глубоко залезть (меню, дисплей и тэдэ)
vk вне форума  
 
Автор темы   Непрочитано 23.07.2004, 05:52
#8
Влад

Инженер-конструктор
 
Регистрация: 30.08.2003
Новосибирск
Сообщений: 76
<phrase 1=


Огромное спасибо всем ответившим.
Отдельное спасибо kos за представленный листинг ( правда пока не проверял как работает вечером дома проверю) [/b]
Влад вне форума  
 
Непрочитано 23.07.2004, 10:33
#9
kos

LISP-программист
 
Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238


Цитата:
Сообщение от plaz
Я смотрю все больше и больше людей переходят на VisualLisp. У него на столько больше преимуществ?
А я не разделяю классический AutoLISP и VisualLISP. Для меня - все LISP. [sm1101]
Пользуюсь тем, что больше подходит для реализации конкретной задачи. Хотя у VisualLISP'а возможности пошире будут. Нет, скорее, глубже. Ну да про это vk написал...
__________________
Там все есть для счастья - меня там только нет.
Так это значит, что я там - буду!
kos вне форума  
 
Непрочитано 15.11.2005, 14:45
#10
Romanich

Robot и Хобот
 
Регистрация: 29.08.2003
Abu Dhabi
Сообщений: 940
Отправить сообщение для Romanich с помощью Skype™


Возникла та же проблема что и у комрада Влад
Прочитал топик, но так толком ничего и не понял.....
Помогите, плиз.
__________________
Robot и Хобот
Romanich вне форума  
 
Непрочитано 15.11.2005, 17:10
#11
Sergk

инженер-проектировщик
 
Регистрация: 10.03.2005
Сообщений: 54


В прошлом году здесь мне дали замечательный лисп для этих целей
Команда вызова _(PSF), указываете один файл из папки и он чистит всю папку. Работает великолепно.

(defun PSF (
/
DocumentsCollection
UnPurgedFileList
ActiveDocument
AcadObject
UnPurged
FileList
Index
path
x
)

(vl-load-com);Загрузить расширение
(setq AcadObject (vlax-get-acad-object)) ;получить объект Application
(setq ActiveDocument (vla-get-activedocument AcadObject));Получить указатель на активный документ
(setq DocumentsCollection (vla-get-documents AcadObject));получить указатель на коллекцию документов

(setq path (vl-filename-directory (getfiled "Выберете любой чертеж в папке" "" "dwg" 16)));Получить путь к очищаемой папке
(alert "!!!Внимание!!!\n
Процесс чистки может занять много времени.\n
В целях ускорения процесса сессия будет невидима\n
Пожалуйста дождитесь завершения\n
Нажмите ОК для продолжения");выдать предупреждение
(vlax-put-property AcadObject "Visible" :vlax-false) ;убрать сеанс с экрана

(setq FileList (vl-directory-files path "*.dwg" 1)) ;получить список файлов в директории
(if (not (null FileList)); если найден хоть один файл
(progn
(setq FileList (mapcar '(lambda (x) (strcat path "\\" x)) FileList));получить список полных путей к файлам
(setq Index 0) ;инициализировать индекс
(setq UnPurged 0) ;инициализировать счетчик неочищеных файлов
(setq UnPurgedFileList "") ;Инициализировать строку - список неочищеных
(repeat (length FileList) ;цикл
(setq ActiveDocument
(vl-catch-all-apply 'vla-open (list DocumentsCollection (nth Index FileList))) ;открыть файл
);end setq
(if (not (vl-catch-all-error-p ActiveDocument));если при открытии не возникло ошибок
(progn

(if (= (vlax-get-property ActiveDocument "ReadOnly") :vlax-true)
;если чертеж открыт только для чтения
(progn ;если чертеж нельзя изменять
(setq UnPurged (1+ UnPurged));инкримент счетчика неочищеных файлов
(Setq UnPurgedFileList (strcat "\n" (nth Index FileList)UnPurgedFileList))
; добавить строку с путем к файлу
(vlax-invoke-method ActiveDocument "Close" :vlax-false);закрыть чертеж без сохранения
);end progn
(progn ;если чертеж можно изменять
(vlax-invoke-method ActiveDocument "Purgeall");чистить
(vlax-invoke-method ActiveDocument "Purgeall");чистить
(vlax-invoke-method ActiveDocument "Purgeall");чистить
(vlax-invoke-method ActiveDocument "Save"); сохранить
(vlax-invoke-method ActiveDocument "Close");закрыть чертеж
) ;end progn
);end if
);end progn

(setq UnPurged (1+ UnPurged));если файл не открылся - нкримент счетчика неочищеных файлов
);end if
(setq Index (1+ Index));перейти к следующему файлу
)

(vlax-put-property AcadObject "Visible" :vlax-true); сделать акад видимым

(alert
(strcat "Процесс чистки успешно завершен.\n" ;выдать сообщение
(if (not (null UnPurgedFileList))
(strcat " Неочищеных файлов: " (itoa UnPurged) "\n" UnPurgedFileList)
"\n"
)
);end strcat
);end alert
);end progn
(progn
(vlax-put-property AcadObject "Visible" :vlax-true); сделать акад видимым
(alert "\n Не найдено ни одного файла"); если в каталоге нет ни одного файла - сообщить об этом
);end progn
);end if
(princ)
)
Sergk вне форума  
 
Непрочитано 15.11.2005, 17:38
#12
Romanich

Robot и Хобот
 
Регистрация: 29.08.2003
Abu Dhabi
Сообщений: 940
Отправить сообщение для Romanich с помощью Skype™


не получается что-то... выдает

Command: _(PSF)
LISP command is not available.

Может листинг с ошибкой? Просто я от синтаксиса LISP далек
Акад 2006 английский.
__________________
Robot и Хобот
Romanich вне форума  
 
Непрочитано 15.11.2005, 17:55
#13
Sergk

инженер-проектировщик
 
Регистрация: 10.03.2005
Сообщений: 54


Я этим файлом год пользуюсь. Самый простой способ: загрузи через меню или скопируй этот лисп в командную строку. Далее "enter", команда (PSF) в командную строку и вылетает окно для выбора папки. Попробуй еще раз, все работает.
Sergk вне форума  
 
Непрочитано 15.11.2005, 18:05
#14
Romanich

Robot и Хобот
 
Регистрация: 29.08.2003
Abu Dhabi
Сообщений: 940
Отправить сообщение для Romanich с помощью Skype™


Sergk, спасибо, заработало
А вот можно ли его изменить так, что бы сразу папку со всеми вложенными папками обработал?
__________________
Robot и Хобот
Romanich вне форума  
 
Непрочитано 15.11.2005, 18:22
#15
Star

Конструктор штампов
 
Регистрация: 10.03.2004
г. Киев
Сообщений: 92


Есть утилита PURGEM 2000. Trial - 30 дней.
Куча настроек. После 30 дней обрабатывает до 15 файлов.

http://www.absolutecompsolutions.com/
Star вне форума  
 
Непрочитано 15.11.2005, 19:14
#16
Romanich

Robot и Хобот
 
Регистрация: 29.08.2003
Abu Dhabi
Сообщений: 940
Отправить сообщение для Romanich с помощью Skype™


Star спасибо большое. Утилита действительно классная, а главное полезная
__________________
Robot и Хобот
Romanich вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Команда _purge