Infinicad Posté(e) le 5 novembre 2013 Posté(e) le 5 novembre 2013 Bonjour,Activelot est un lisp qui applique un lisp à tout le dossier courant.Je voudrais le modifier pour qu'il n'ouvre plus de boite de dialogue pour selectionner le lisp à applique.De cette manière je voudrais pouvoir le dedier à un lisp particulier. Activelot:;;;=================================================================;;;;;; 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) Merci à vousBon en fait j'ai trouvé je suis trop prompt à poster je crois....désolé 1
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