LUDWIG Posté(e) le 7 avril 2006 Posté(e) le 7 avril 2006 Bonjour Je cherche à lister dans un fichier les LISP d'un répertoire (pour ensuite les charger automatiquement un par un dans autocad). J'ai utilisé la commande shell et la fonction dir : impeccable shell dir M:\Modele\*.lsp /b /s /x /n /l m:\modele\outils_intégration_bdp\fonctions\numérotation locaux\numérotation.lsp m:\modele\outils_intégration_bdp\fonctions\polygone_surface\intégration.lsp m:\modele\outils_intégration_bdp\fonctions\polygone_surface\intégration_chu.lsp Mais oh ! problème, si je demande d'écrire dans un fichier, les caractères accentués sont modifiés. shell dir M:\Modele\*.lsp /b /s /x /n /l >c:\A.txt m:\modele\outils_int‚gration_bdp\fonctions\num‚rotation locaux\num‚rotation.lsp m:\modele\outils_int‚gration_bdp\fonctions\polygone_surface\int‚gration.lsp m:\modele\outils_int‚gration_bdp\fonctions\polygone_surface\int‚gration_chu.lsp Je ne peux pas me permettre de passer par un programme externe qui me modifierai le fichier texte, ni d'oter les accents. Du coup, je me demande si la fonction dir est la bonne solution. Je me demande si la fonction vl-directory-files pourrait m'aider. Mais elle ne permet pas d'explorer les sous répertoires (je crois). A moins d'en faire une routine qui lit l'arboresence des dossiers puis va lire le contenu de chaque dossier. Si quelqu'un a une solution à me proposer, je le remercie par avance... Autocad 2021 - Revit 2022 - Windows 10
bonuscad Posté(e) le 7 avril 2006 Posté(e) le 7 avril 2006 Avec l'aide précieuse de Tony :) [color=red] ;; ;;Auteur de BrowseForFolder ;;Tony Tanzillo ;; [/color] (defun BrowseForFolder ( Message / sh folder parentfolder folderobject result) (vl-load-com) (setq sh (vla-getInterfaceObject (vlax-get-acad-object) "Shell.Application" ) ) (setq folder (vlax-invoke-method sh 'BrowseForFolder 0 "Message" 0 ) ) (vlax-release-object sh) (if folder (progn (setq parentfolder (vlax-get-property folder 'ParentFolder) ) (setq FolderObject (vlax-invoke-method ParentFolder 'ParseName (vlax-get-property Folder 'Title) ) ) (setq result (vlax-get-property FolderObject 'Path) ) (mapcar 'vlax-release-object (list folder parentfolder folderobject) ) (if (/= (substr result (strlen result)) "\\") (setq result (strcat result "\\")) result ) ) ) ) [color=blue] ;; ;;Merci Tony! ;; [/color] (defun c:lsp? ( / DirPath lst_appli) (setq DirPath (BrowseForFolder "Sélectionner le dossier")) (setq lst_appli (vl-directory-files DirPath "*.lsp" 1)) (if lst_appli (foreach n lst_appli (load (strcat DirPath n))) ) (prin1) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
fabcad Posté(e) le 7 avril 2006 Posté(e) le 7 avril 2006 As tu essaye la bibliotheque de fonctions lisp nommée DOSLIB 6. Tu verras les possibilités offertes par ces fonctions.
LUDWIG Posté(e) le 7 avril 2006 Auteur Posté(e) le 7 avril 2006 Merci Mais cela ne permet pas de charger les lisp qui se trouve dans un sous-répertoire, ce que je souhaiterais faire. Il faudrait que cette routine charge les lisps qu'elles trouvent ET qu'elle se relance elle-même sur les sous répertoire qu'elle trouve (serait-ce ça la récursivité ?). Autocad 2021 - Revit 2022 - Windows 10
LUDWIG Posté(e) le 7 avril 2006 Auteur Posté(e) le 7 avril 2006 As tu essaye la bibliotheque de fonctions lisp nommée DOSLIB 6. Tu verras les possibilités offertes par ces fonctions. Je voulais éviter de faire appel à une fonction externe, mais ce sera peut-être plus simple en fait... alors je regarde ça. Merci Autocad 2021 - Revit 2022 - Windows 10
LUDWIG Posté(e) le 7 avril 2006 Auteur Posté(e) le 7 avril 2006 Ca m'intéresse effectivement. 1 - je charge l'arx de doslib2 - je créé une liste de mes fichiers (setq 2bcharged (dos_find "chemin\\*.lsp"))3 - je fais un appload de chacun de éléments de ma liste Autocad 2021 - Revit 2022 - Windows 10
rebcao Posté(e) le 7 avril 2006 Posté(e) le 7 avril 2006 Personnellement j'utilise un fichier BATch de conversion pour les problèmes d'accent. Je pense qu'il pourrait être adapté à ton développement. Peux-tu m'envoyer le fichier contenant la liste de tes fichiers pour tester. Si ça t'intéresse. (Mail en pied de mon message... ;) J'avais un sujet sur CADxp en rapport avec les SCRIPTs qui utilisait déjà cette bidouille. Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
LUDWIG Posté(e) le 7 avril 2006 Auteur Posté(e) le 7 avril 2006 Oui je me souviens de ton batch qui convertissait les accents. C'était pour des scripts. Je t'"envois la liste lundi (week-end oblige). Sinon, avec le dos_find de doslib, je suis arrivé à mes fins (hormis bug sur le chargement de certéains arx et dvb...). Mais je serais quand même intéressé par ta méthode. Merci a+ Autocad 2021 - Revit 2022 - Windows 10
Patrick_35 Posté(e) le 8 avril 2006 Posté(e) le 8 avril 2006 SalutEt avec ce sujet ? @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
LUDWIG Posté(e) le 10 avril 2006 Auteur Posté(e) le 10 avril 2006 Patrick_35, je n'ai pas su exploiter le lisp du sujet que tu indiques (honte sur moi...). Il me dit "commande inconnue : S"; je n'ai pourtant pas de commande "S" dans le lisp ? François - X13 : merci pour ces abondantes sources. je me suis servi de get-files-subdirs et get-subdirs Je posterais mon code quand j'aurais régler mes autres problèmes Autocad 2021 - Revit 2022 - Windows 10
Patrick_35 Posté(e) le 10 avril 2006 Posté(e) le 10 avril 2006 J'ai fais une utilisation de cette routine iciIl suffit de virer les liens avec Excel et de modifier la fonction rechercher @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
LUDWIG Posté(e) le 14 avril 2006 Auteur Posté(e) le 14 avril 2006 Voici donc enfin ma routine... 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