Aller au contenu

Classement

Contenu populaire

Affichage du contenu avec la meilleure réputation le 06/11/2013 dans toutes les zones

  1. 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é
    -1 points
×
×
  • 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é