Aller au contenu

Messages recommandés

Posté(e)

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 à vous

Bon en fait j'ai trouvé je suis trop prompt à poster je crois....

désolé

  • Downvote 1

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité