LUDWIG Posté(e) le 14 avril 2006 Posté(e) le 14 avril 2006 Après m'être battu avec le code et grace à votre aide, j'ai l'honneur (!) de vous présenter un lisp qui va tenter de charger toutes les applications qui sont présentent dans un répertoire et ses sous répertoire. J'ai voulu ce code car dans ma société, on utilise beaucoup de dvb et lsp. Il faut les charger au démarrage pour les lancer. Mais il y en a des nouveaux tous les jours (ou presque). On ne sait pas s'ils sont chargés. On ne sait pas ou ils sont rangés. Avec cette solution, plus besoin de se poser de questions (pourvu que l'application soit enregistrées dans une sous arborescence du répertoire indiqué). En fonction de l'arborescence du répertoire et du nombre d'application à charger, la recherche et le chargement peut être long. je suis preneur de solutions pour accélerer ce code... ;par Ludwig avec l'aide des membres de CadXP (Defun c:TOUTCHARGER () (setq ListFilesFullPath '()) (setq Listerror '()) (setq EXTENSIONS_A_CHARGER (list "fas" "dvb" "lsp" "arx")) (setq REPERTOIRE_DE_RECHERCHE "M:\\Modele\\Outils_intégration_BDP\\Fonctions\\" ) (foreach EXT EXTENSIONS_A_CHARGER (get-files-subdirs REPERTOIRE_DE_RECHERCHE (strcat "*." EXT) ) ) (foreach n ListFilesFullPath (setq Right (substr n (+ (- (strlen n) 3) 1))) (cond ((= Right "fas") (setq charg load)) ((= Right "lsp") (setq charg load)) ((= Right "dvb") (setq charg vl-vbaload)) ((= Right "arx") (setq charg arxload)) ) (if (not (vl-catch-all-error-p (setq err (vl-catch-all-apply 'charg (list n))) ) ) (progn (princ (strcat "\n---->CHARGEMENT DE\n" n "\n")) (charg n) (princ "\n\n") ) (progn (princ (strcat "\n---->ERREUR AU CHARGEMENT DE\n" n "\n" (vl-catch-all-error-message err) "\n" ) ) (setq listerror (append listerror (list n))) ) ) ) (if (/= 0 (length listerror)) (progn (princ "\n\n\n Il y a eu erreur au chargement des fichiers suivants \n" ) (foreach m listerror (princ (strcat "-->" m "\n")) ) ) ) (princ) ) ; Bruno Toniutti 1.051114 (defun get-subdirs (path) (apply (quote append) (cons (list path) (mapcar '(lambda (x) (get-subdirs (strcat path x "\\"))) (cddr (vl-directory-files path nil -1)) ) ) ) ) ; sample use with BrowseForFolder from Tony Tanzillo (defun get-files-subdirs (RootPath ext) (foreach path (get-subdirs RootPath) (setq ListFilesFullPath (append ListFilesFullPath (mapcar '(lambda (fileName) (strcat path fileName)) (vl-directory-files path ext 1) ) ) ) ) ;ListFilesFullPath ) NOTE : je n'ai pas prévu le chargement de VLX et DBX, il suffit de rajouter quelques lignesNOTE 2 : j'aurais pu passer le chemin du répertoire en variable Autocad 2021 - Revit 2022 - Windows 10
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