Infinicad Posté(e) le 16 juin 2014 Posté(e) le 16 juin 2014 Bonjour,j'ai besoin de traiter avec ce lisp : (if (setq dir "D:\\Documents and Settings\\BC5047\\Bureau\\bloc1" files (vl-directory-files dir "*.dwg" 1) ) (progn (foreach f files (if (tblsearch "block" (setq b (vl-filename-base f))) (progn (command "_-insert" (strcat b "=" dir "\\" f)) (command) (command "attsync" "Nom" (setq b (vl-filename-base f))) ) ) ) ) ) tout un dossier.Normalement j'utilise ce lisp pour traiter par lot:;;;================================================================= ;;; ;;; ACTIVELOT.LSP ;;; ;;; Executer un lisp ou script sur plusieurs fichiers dans plusieurs répertoires ;;; ;;; ;;;================================================================= (defun c:activelot(/ bl cdl fi lec lst rep sc sd sr MsgBox GetFolders _Collector _Main) (defun MsgBox (Titre Bouttons Message / Reponse WshShell) (setq WshShell (vlax-create-object "WScript.Shell")) (setq Reponse (vlax-invoke WshShell 'Popup Message 0 Titre (itoa Bouttons))) (vlax-release-object WshShell) Reponse ) (defun GetFolders ( path / _GetFolders _Collector _Main ) (defun _GetFolders ( path / folders ) (if (vl-position "." (setq folders (vl-directory-files path nil -1))) (cddr folders) folders ) ) (defun _Collector ( folder / temp ) (cons (setq temp (strcat path "\\" folder)) (apply 'append (_Main temp))) ) (defun _Main ( path ) (mapcar '_Collector (_GetFolders path)) ) (apply 'append (_Main path)) ) (vl-load-com) (if (zerop (getvar "dbmod")) (progn (setq sd (getvar "sdi")) (if (not (vl-catch-all-error-p (vl-catch-all-apply 'setvar (list "sdi" 1)))) (if (setq bl (getfiled "Sélection du fichier lisp/script pour le traitement par lot" "T:\\dao\\01 SIG\\1_ METHODES\\6_Outils BE\\LISP_SCRIPT\\1_Tous_les_programmes" "lsp;scr" 16)) (progn (setq cdl (vlax-create-object "Shell.Application") bl (vl-string-translate "\\" "/" bl)) (if (setq rep (vlax-invoke cdl 'browseforfolder 0 "Sélectionnez la branche de répertoires à traiter" 512 "")) (progn (setq rep (vlax-get-property (vlax-get-property rep 'self) 'path) rep (cons rep (getfolders rep))) (foreach lec rep (setq lst (append lst (mapcar '(lambda (x) (strcat lec "\\" x)) (vl-remove-if-not '(lambda (x) (or (eq (vl-filename-extension (strcase x)) ".DWG") (eq (vl-filename-extension (strcase x)) ".DXF")) ) (vl-directory-files lec "*.*" 1) ) ) ) ) ) (setq sc (strcat (vla-get-path (vlax-get-acad-object)) "/Patrick_35.scr") fi (open sc "w")) (foreach lec lst (write-line (strcat "_.open \"" lec "\"") fi) (if (eq (vl-filename-extension (strcase bl)) ".SCR") (progn (setq sr (open bl "r")) (while (setq rep (read-line sr)) (write-line rep fi) ) (close sr) ) (write-line (strcat "(load \"" bl "\")") fi) ) (if (eq (vl-filename-extension (strcase lec)) ".DXF") (write-line (strcat "_.saveas dxf 16 " "\"" lec "\" _yes") fi) (write-line (strcat "_.qsave") fi) ) ) (write-line (strcat "sdi " (itoa sd)) fi) (write-line (strcat "(vl-file-delete \"" (vl-string-translate "\\" "/" sc) "\")") fi) (close fi) (vlax-release-object cdl) (vl-cmdf "_.script" sc) ) (msgbox "Activelot" 48 "Vous n'avez pas sélectionné une branche de répertoires à traiter.\nAbandon.") ) (vlax-release-object cdl) ) (msgbox "Activelot" 48 "Vous n'avez pas sélectionné de Lisp/Script.\nAbandon.") ) (msgbox "Activelot" 48 "Impossible de mettre la variable SDI à 1.\nVeuillez fermer vos dessins.\nAbandon.") ) ) (msgbox "Activelot" 48 "Veuillez sauvegarder votre dessin.") ) (princ) ) (setq nom_lisp "Activelot") (if (/= app nil) (if (= (strcase (substr app (1+ (- (strlen app) (strlen nom_lisp))) (strlen nom_lisp))) nom_lisp) (princ (strcat "..." nom_lisp " chargé.")) (princ (strcat "\n" nom_lisp ".LSP Chargé.....Tapez " nom_lisp " pour l'éxecuter."))) (princ (strcat "\n" nom_lisp ".LSP Chargé......Tapez " nom_lisp " pour l'éxecuter."))) (setq nom_lisp nil) (princ) D'habitude ça marche bien mais là la routine s'arrête dès qu'un bloc est modifiée et je commprends absoluement pas pourquoi :blink: Quelqu'un peut-il m'eclairer? Merci
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant