|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Команда _purge
Инженер-конструктор
Новосибирск
Регистрация: 30.08.2003
Сообщений: 76
|
||
Просмотров: 5253
|
|
||||
LISP-программист Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238
|
Я бы написал LISP'ик, который:
1. прчитал бы список dwg-файлов в требуемой папке. 2. последовательно, по этому списку открывал бы каждый из этих dwg. 3. пургенил бы его. 4. сохранял (лучше в новую папку).
__________________
Там все есть для счастья - меня там только нет. Так это значит, что я там - буду! |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
>kos
Красиво!!! ![]() >plaz Загляни в файл ...Help\acad_dev.chm -> AutoLISP Reference -> V Functions. Там 95% функций относятся к VisualLisp. Плюс возможность (используя эти функции) влезть прямиком в другие приложения (в Word или Excel, например) посредством COM технологии. Да и внутри АКАДа можно глубоко залезть (меню, дисплей и тэдэ) |
|||
![]() |
|
||||
LISP-программист Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238
|
Цитата:
Пользуюсь тем, что больше подходит для реализации конкретной задачи. Хотя у VisualLISP'а возможности пошире будут. Нет, скорее, глубже. Ну да про это vk написал...
__________________
Там все есть для счастья - меня там только нет. Так это значит, что я там - буду! |
|||
![]() |
|
||||
Возникла та же проблема что и у комрада Влад
Прочитал топик, но так толком ничего и не понял..... Помогите, плиз.
__________________
Robot и Хобот |
||||
![]() |
|
||||
инженер-проектировщик Регистрация: 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) ) |
|||
![]() |
|
||||
не получается что-то... выдает
Command: _(PSF) LISP command is not available. Может листинг с ошибкой? Просто я от синтаксиса LISP далек ![]() Акад 2006 английский.
__________________
Robot и Хобот |
||||
![]() |
|
||||
инженер-проектировщик Регистрация: 10.03.2005
Сообщений: 54
|
Я этим файлом год пользуюсь. Самый простой способ: загрузи через меню или скопируй этот лисп в командную строку. Далее "enter", команда (PSF) в командную строку и вылетает окно для выбора папки. Попробуй еще раз, все работает.
|
|||
![]() |
|
||||
Sergk, спасибо, заработало
![]() А вот можно ли его изменить так, что бы сразу папку со всеми вложенными папками обработал?
__________________
Robot и Хобот |
||||
![]() |
|
||||
Конструктор штампов Регистрация: 10.03.2004
г. Киев
Сообщений: 92
|
Есть утилита PURGEM 2000. Trial - 30 дней.
Куча настроек. После 30 дней обрабатывает до 15 файлов. http://www.absolutecompsolutions.com/ |
|||
![]() |
|
||||
Star спасибо большое. Утилита действительно классная, а главное полезная
![]()
__________________
Robot и Хобот |
||||
![]() |