stephan35 Posté(e) le 6 février 2007 Posté(e) le 6 février 2007 Bonjour, Afin d'optimiser mes programmes, je cherche une solution qui permet en Lisp d'extraire la liste des DWG (ou autre) du répertoire en cours, voici mon bout de soft existant que je trouve plus qu'archaique (ou Bricoleur du dimanche ... ;) ) $drive = path de mon soft$REP_TMP = répertoire de traitementCache = shell caché Voici mon existant : ;_Supression des fichier mouchards (command "CACHE" (strcat "DEL " $drive "controle_dossier.md5")) (command "CACHE" (strcat "DEL " $drive "synchro.md5")) ;_ Construction du fichier bat (setq $Fichier_ecrire (open (strcat $drive "md5sum.bat") "w")) (write-line (substr $REP_O 1 2) $Fichier_ecrire) (write-line (strcat "CD " $REP_TMP) $Fichier_ecrire ) (write-line (strcat "dir \"" $REP_TMP "*.dwg\" \/B |sort > " $REP_TMP "listedesdwg.tmp") $Fichier_ecrire) (write-line (strcat "dir " $REP_TMP "listedesdwg.tmp > " $drive "synchro.md5") $Fichier_ecrire ) (close $Fichier_ecrire) ;_Création du chesksum (command "CACHE" (strcat $drive "md5sum.bat" )) Puis j'ouvre bêtement le fichier listedesdwg.tmp pour le mettre dans une liste. Le traitement md5 fera l'objet d'une autre demande . Merci pour vos suggestions et propositions ... :D
(gile) Posté(e) le 6 février 2007 Posté(e) le 6 février 2007 Salut, Regarde les fonctions GetFile Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
stephan35 Posté(e) le 6 février 2007 Auteur Posté(e) le 6 février 2007 Super ! Merci, cela fonctionne à merveille ....., Dans tous les exemples on a du natif autocad ACET et du LISP j'ai cru comprendre qu'il valait mieux utiliser les fonctions LISP que ACET ? Re-Merci :D
ElpanovEvgeniy Posté(e) le 6 février 2007 Posté(e) le 6 février 2007 Super ! Merci, cela fonctionne à merveille ....., Dans tous les exemples on a du natif autocad ACET et du LISP j'ai cru comprendre qu'il valait mieux utiliser les fonctions LISP que ACET ? Re-Merci :D ACET peut changer dans n'importe quelle version, mais LISP vous-mêmes, vous changez, s'il faut! Evgeniy
stephan35 Posté(e) le 7 février 2007 Auteur Posté(e) le 7 février 2007 Super ! Merci, cela fonctionne à merveille ....., Dans tous les exemples on a du natif autocad ACET et du LISP j'ai cru comprendre qu'il valait mieux utiliser les fonctions LISP que ACET ? Re-Merci :D ACET peut changer dans n'importe quelle version, mais LISP vous-mêmes, vous changez, s'il faut! I did'nt understand !Maybe in english ? Thank
ElpanovEvgeniy Posté(e) le 7 février 2007 Posté(e) le 7 février 2007 I did'nt understand !Maybe in english ? Thank Autodesk can change ACET-functions in each new version...You owner LISP of functions - you can change the program at any time! Evgeniy
stephan35 Posté(e) le 7 février 2007 Auteur Posté(e) le 7 février 2007 I did'nt understand !Maybe in english ? Thank Autodesk can change ACET-functions in each new version...You owner LISP of functions - you can change the program at any time! Ok, I undenstand, so I take your example, faster than shell command ;) (defun GetFile (f p) (apply (function append) (cons (if (vl-directory-files p f) (mapcar (function (lambda (x) (strcat p "/" x))) (vl-directory-files p f)) ) ;_ if (mapcar (function (lambda (x) (GetFile f (strcat p "/" x)))) (vl-remove ".." (vl-remove "." (vl-directory-files p nil -1))) ) ;_ mapcar ) ;_ cons ) ;_ apply ) I only change \\ by / .... i think there is no problem with this ? Thank
ElpanovEvgeniy Posté(e) le 7 février 2007 Posté(e) le 7 février 2007 :) :) (vl-cmdf "shell" (strcat "FOR /F \"usebackq delims===\" %i IN (`dir \"" (getenv "ProgramFiles")"\\*acad.exe\" /s /b`) do echo.\"%~fi\">> d:\\temp.txt")) temp.txt:"C:\Program Files\AutoCAD 2004\acad.exe""C:\Program Files\AutoCAD 2007\acad.exe" Evgeniy
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