Итак, первый блин :)
; программа проверки dwg файлов текущего проекта командой Audit c исправлением ошибок
; разместить в общедоступной папке файлы Fil---obr-3.lsp, Fil_obr-3a---start.scr,
(defun c:test ()
(setq _tmp (strcat "HKEY_CURRENT_USER\\" (vlax-product-key) "\\Recent Project list" ))
(setq _tmp (vl-registry-read _tmp (car(acad_strlsort (vl-registry-descendents _tmp "" )))))
(setq _tmp (vl-filename-directory _tmp))
(princ "\nПапка проекта - ") (princ _tmp)
(princ "\n----------------------------------------")
(setq _spF (GetFolders (list _tmp))) ; список файлов
(setq _spF ; список dwg файлов
(vl-remove-if '(lambda (xxx) (or (vl-file-directory-p XXX) (null (wcmatch (strcase XXX T) "*.dwg*")) )) _spF))
(vl-propagate '_spf) ; список файлов
(setq _i-spf (length _spf)) ; номер текущего файла в списке
(command "_qsave")
(command "_script" "Fil_obr-3a---start.scr")
(princ))
(defun GetFolders (p)
;; By ElpanovEvgeniy
;; (GetFolders '("C:\\Program Files\\AutoCAD 2004\\Sample"))
;|
Function of search of all folders,
inside of the root folders specified in the list.
Arguments:
P - the list of root folders.
For example '("C:\\Program Files") or ' ("C:" "D:" "E:")
|;
(if p
(append
p
(GetFolders
(apply
(function append)
(mapcar
(function (lambda (b)
(mapcar (function (lambda (a) (strcat b "\\" a)))
(vl-remove ".." (vl-remove "." (vl-directory-files b nil-1)))
) ;_ mapcar
) ;_ lambda
) ;_ function
p
) ;_ mapcar
) ;_ apply
) ;_ GetFolders
) ;_ append
) ;_ if
) ;_ defun
; код файла - Fil---obr-3.lsp
(defun fil---obr-3 ()
(print (nth _i-spf _spf))
(setq _i-spf (1- _i-spf))
(vl-propagate '_i-spf) ; номер текущего файла в списке
(setq _file (nth _i-spf _spf))
(print _i-spf)
); defun
содержимое файла Fil_obr-3a---start.scr
(load "fil---obr-3")
(fil---obr-3)
._open
(princ _file)
._audit
_Y
._qsave
._script
Fil_obr-3a---start
Цикл обработки списка файлов работает
Проблема пока в появляющихся иногда окнах автокада типа
- сделано в предыдущей версии
- Customization file 'aca.cuix' is write protected.
и т.п.
при этом программа останавливается, но после нажатия на OK продолжается...
можно ли как-то одним махом подавить подобные запросы автокада :?:
PS
В программе использовались:
- способ доступа к папке текущего проекта Алексея Кулик
- функция GetFolders Евгения Елпанова