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

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

LISP на _purge

Ответ
Поиск в этой теме
Непрочитано 20.09.2007, 09:45 #1
LISP на _purge
Малюк
 
проектировщик
 
Житомир
Регистрация: 03.05.2007
Сообщений: 652

Есть такая проблема - приблизительно 25,0 Гб грязных чертежей, которые находятся в разных папках. Есть LISP на _purge (скачанный на dwg.ru). Когда его запускаеш он запрашивает файл, указываеш его место положение и он чистит всю директорию (вложенные папки он к сожалению не читстит). Подскажите пожалуста, где можно найти такой LISP который бы также чистил вложенные папки?
Просмотров: 4438
 
Непрочитано 20.09.2007, 10:35
#2
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


А вот такое пробовал?
Код:
[Выделить все]
(defun C:BatchPurge ( / cmd n_doc ShellApp Dir dir_lst file_lst folItm UnPrg UnPrgLst Prg lst msg)
  (vl-load-com)
  (setq	cmd (getvar "CMDECHO")
	n_doc (vla-getinterfaceobject (vlax-get-acad-object) "ObjectDBX.AxDbDocument.16")
        Prg 0 UnPrg 0);setq
  (if (and (setq ShellApp (vla-getInterfaceObject (vlax-get-acad-object) "Shell.Application"))
           (setq Dir (vlax-invoke-method ShellApp 'BrowseForFolder 0
                       "Select Direcory to Purge Files in" 0)));and
    (progn (setq dir_lst (list Dir))
      (vlax-release-object ShellApp) (setq ShellApp nil) 
      (while dir_lst (setq itms (vlax-invoke-method (car dir_lst) 'Items)
                           cnt (1- (vla-get-count itms)));setq
        (while (< 0 cnt) (setq itm (vla-item itms cnt)) 
          (if (= :vlax-true (vlax-get-property itm 'IsFileSystem))
            (cond ((= "AutoCAD Drawing" (vla-get-Type itm))
                    (setq file_lst (cons (vla-get-Path itm) file_lst)))
                  ((= :vlax-true (vlax-get-property itm 'IsFolder))
                    (if (setq folItm (vl-catch-all-apply 'vlax-get-property (list itm 'GetFolder)))
                       (setq dir_lst (cons folItm dir_lst))))));if
          (setq cnt (1- cnt)));while
        (setq dir_lst (cdr (reverse dir_lst))));while
    );progn
    file_lst
  );if
  (foreach dwg file_lst 
    (vla-open n_doc (findfile dwg))
    (if (not (vlax-method-applicable-p n_doc 'PurgeAll))
      (progn (setq UnPrg (1+ UnPrg)
                   UnPrgLst (cons (vla-get-name n_doc) UnPrgLst))
        (vla-close n_doc :vlax-false));progn
      (progn (repeat 2 (vla-purgeall n_doc))
        (vla-close n_doc :vlax-true)
            (setq Prg (1+ Prg))));if
   );foreach
  (while UnPrgLst (setq lst (if lst (strcat lst "\n" (car UnPrgLst)) (car UnPrgLst))
                        UnPrgLst (cdr UnPrgLst)));while
  (setq msg1 (if (= Prg 0) "No Purged Files"
               (strcat "Congratulations! Purge Completed.\n" (itoa Prg) "Files Purged"))
        msg2 (strcat (itoa UnPrg) " Files Not Purged: \n" lst));setq
  (alert (strcat msg1 msg2))
);end
Лентяй вне форума  
 
Непрочитано 20.09.2007, 10:53
#3
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


Попробовал

Код:
[Выделить все]
Command: _appload Пурдже директория.lsp successfully loaded.


Command:
Command:
Command: BATCHPURGE
; error: Automation Error. Problem in loading application
не работает
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 20.09.2007, 10:55
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


> Лентяй : критику принимай. Сразу, влет.
1. В AutoCAD 2007, 2008 и 2002 работать не будет, а ObjectDBX там есть.
2. В русских версиях 100% будут проблемы, потому что AutoCAD Drawing может называться как Рисунок AutoCAD, Рисунок DWG ну и тому подобное.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.09.2007, 11:15
#5
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,405
Отправить сообщение для Александр Ривилис с помощью Skype™


Мне кажется есть значительно более серьезное замечание. В AutoCAD'е есть утечки памяти и пытаться пуржить сразу десятки гигабайт чертежей - это с гарантией получить вылет AutoCAD. Поэтому советую пуржить по частям!
Александр Ривилис вне форума  
 
Непрочитано 20.09.2007, 12:19
#6
u77


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


может поможет ?
http://www.autocad.ru/cgi-bin/f1/board.cgi?t=16229ev
u77 вне форума  
 
Автор темы   Непрочитано 20.09.2007, 19:19
#7
Малюк

проектировщик
 
Регистрация: 03.05.2007
Житомир
Сообщений: 652


Попробывал LISP Лентяя на 2006 eng получилось следущее:

Код:
[Выделить все]
Command: _appload Purge целые дериктории. Вызов - BatchPurge.lsp successfully 
loaded.
Command:
Command:
Command: BatchPurge
; error: ActiveX Server returned the error: unknown name: Close
Малюк вне форума  
 
Непрочитано 20.09.2007, 22:27
#8
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


ezscript pro тебе поможет, кстати если акад вылетит, то в прогрессбаре ты узнаешь где именно вылетел, и будешь продолжать пурджить с нужного места, кстати там еще в екзамплах есть скрип на зверский пурдж с помощью wblock - ето вапще жосткая весчь если всякой прокси и тому подобной фигни много, а если чертежики свои (чистенькие) то достаточно purga.
Sleekka вне форума  
 
Непрочитано 21.09.2007, 08:33
#9
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


Цитата:
Сообщение от Кулик Алексей aka kpblc
> Лентяй : критику принимай. Сразу, влет.
Последнюю реплику мы с гневом отвергаем как неорганизованную (С) "Сказка о Тройке"
Цитата:
1. В AutoCAD 2007, 2008 и 2002 работать не будет, а ObjectDBX там есть.
А мне пох Дома у меня стоит 2005, на работе в то время бал тоже 2005, так что под него и писано.
Цитата:
2. В русских версиях 100% будут проблемы, потому что AutoCAD Drawing может называться как Рисунок AutoCAD, Рисунок DWG ну и тому подобное.
Дык мы же того, в Бусурмании обретаемся, так что см. выше.
А ваще фишка так легла, что с АвтоКадом мне, видимо, придется завязывать [sm900]. Потому как резко сменил сферу деятельности и теперь, как в годы золотые безвозвратно ушедшей молодости, занимаюсь сугубо хим. процессами в качестве Laboratory Supervisor, или проще говоря - завлабы мы. [/quote]
Лентяй вне форума  
 
Непрочитано 21.09.2007, 08:51
#10
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Ну вот, а было так весело... Хоть появляться-то будешь или завяжешь окончательно?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 21.09.2007, 09:41
#11
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


Буду, буду... [sm2203] А то вы меня совсем забудете. [sm802]
Лентяй вне форума  
 
Непрочитано 23.12.2007, 16:02
#12
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,835
<phrase 1=


>Лентяй Попробывал твой LISP на 2005 rus, тот же вид с боку, что и у Малюка
Цитата:
получилось следущее:
Command: BatchPurge
; error: ActiveX Server returned the error: unknown name: Close
только на русском, поэтому не привожу
Если будет время, ты уж посмотри пожалуйста. Автокад не забывай...
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Непрочитано 23.12.2007, 18:15
#13
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Все верно, в ObjectDBX нет метода Close...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP на _purge

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

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