Тема: Как реализовать обработку нескольких файлов в каталоге ?

Суть задачи примерно такова: есть макрос (processing)
этот макрос надо выполнить по всем файлам *.dwg лежаших в одной папке "D:\Files\" ???? подскажите плиз как это реализовать ???

Re: Как реализовать обработку нескольких файлов в каталоге ?

Посмотрите здесь
https://www.caduser.ru/forum/topic16040.html
и здесь
https://www.caduser.ru/forum/topic19699.html

Re: Как реализовать обработку нескольких файлов в каталоге ?

Как собрать список файлов внутри папки и подпапок разобрался, а как пройтись по этим файлам и применить к ним макрос (processing)???

Re: Как реализовать обработку нескольких файлов в каталоге ?

https://www.caduser.ru/forum/topic10500.html

Re: Как реализовать обработку нескольких файлов в каталоге ?

ВОСПОЛЬЗУЙСЯ ПОИСКОМ,
РАНЬНЕ ЭТОТ ВОПРОС НЕ РАЗ ОБСУЖД.

Re: Как реализовать обработку нескольких файлов в каталоге ?

;| Основной код взят с
  CADALYST 03/05 Tip2023: PurgeFiles.lsp    Directory Clean Up    (c) Andrzej Gumula
  [c]2004 Andrzej Gumula, Katowice, Poland
  e-mail: a.gumula@wp.pl|;
(vl-load-com)
;;;Ф-ция работы с обрабатываемым файлом
;;;curDOC - Vla указатель на обрабатываемый документ
;;; типа (vla-get-activedocument (vlax-get-acad-object))
  (defun dofile ( curDOC)
;;;Для примера
;;;Печать имени файла
(princ "\nИмя файла:")
(princ  (vlax-variant-value (vla-GetVariable curDOC "DWGNAME")))
;;;  Очистка
  (vla-purgeall curDOC)
    )
(defun c:DoFile (/ FilesList SubDir Files File)
  (defun GetFolder (/ Dir Item Path)
    (cond
      ((setq Dir
    (vlax-invoke
     (vlax-get-or-create-object "Shell.Application")
       'browseforfolder 0
       "Select folder with DWG files:" 1 ""))
       (cond
     ((not (vl-catch-all-error-p
          (vl-catch-all-apply 'vlax-invoke-method (list Dir 'Items))))
      (setq    Item (vlax-invoke-method
               (vlax-invoke-method Dir 'Items)
               'Item))
      (setq Path (vla-get-path Item))
      (if
        (not (member (substr Path (strlen Path) 1) (list "/" "\\")))
         (setq Path (strcat Path "\\")))))))
    Path)
  (defun vl-findfile (Location / DirList Path AllPath)
    (MakeDirList Location)
    (setq DirList (cons Location DirList))
    (foreach Elem DirList
      (if (setq Path (vl-directory-files Elem "*.dwg"))
    (foreach Item Path
      (setq AllPath (cons (strcat Elem "/" Item) AllPath)))))
    (reverse AllPath))
  (defun MakeDirList (Arg / TmpList)
    (setq TmpList (cddr (vl-directory-files Arg nil -1)))
    (cond (TmpList
       (setq DirList (append
           DirList
           (mapcar '(lambda (z) (strcat Arg "/" z)) TmpList)))
       (foreach Item TmpList (MakeDirList (strcat Arg "/" Item))))))
  (setq *ERR-LIST* nil)
  (if (not FileSystemObject)
    (setq FileSystemObject
       (vla-getInterfaceObject
         (vlax-get-acad-object)
         "Scripting.FileSystemObject")))
  (cond
    ((= (getvar "SDI") 0)
     (cond
       ((setq DwgPath (GetFolder))
    (initget 1 "Yes No")
    (setq
      Subdir (cond
           ((getkword "\nОбрабатывать поддиректории? [Yes/No]: "))
           (T "Yes")))
    (if (equal SubDir "Yes")
      (setq    Files
         (vl-findfile (substr DwgPath 1 (1- (strlen DwgPath)))))
      (setq    Files (mapcar '(lambda (x) (strcat dwgpath x))
                  (vl-directory-files DwgPath "*.dwg" 1))))
    (setq Files (mapcar 'strcase Files))
    (cond
      (Files
       (vlax-for & (vla-get-documents (vlax-get-acad-object))
         (setq FilesList
            (cons (strcase (vla-get-fullname &)) FilesList)))
       (foreach & Files
         (cond
           ((not (member & FilesList))
        (cond
          ((/= (logand (vlax-get-property
                 (vlax-invoke-method
                   FileSystemObject
                   'getfile
                   &
                 )
                 'Attributes
                   )
                   1
               )
               1
           )
           (cond
             ((setq File
                (vla-open (vla-get-documents
                   (vlax-get-acad-object)) &))
              (prompt
            (strcat "\nОбработка файла" & ". Подождите..."))
;;;             Вызываем ф-цию работы с файлом FILE - Vla указатель на документ
              (dofile FILE)
              (prompt (strcat "\nSave and close " &))
              (vla-save File)
              (vla-close File)
              (vlax-release-object File))
             (T
              (prompt
            (strcat
              "\nCannot open "
              &
              "\nDrawing file was created by an incompatible version. ")))))
          (T (prompt (strcat & " is read-only. Purge canceled. ")))))
           (T (prompt (strcat & " is open now. Purge canceled. "))))))
      (T (prompt "\nNothing files found to purge. "))))
       (T (prompt "\nNothing selected. "))))
    (T (prompt "\nThe routine is not available in SDI mode. ")))
  (princ))
(prompt "\n===   Команда загружена. Наберите Dofile  ===")(princ)

В ф-ции dofile задавай необходимую обработку файла. Использовать ActiveX, не command!!!