Aller au contenu

Messages recommandés

Posté(e)

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

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é