Aller au contenu

LUDWIG

Membres
  • Compteur de contenus

    1 396
  • Inscription

  • Dernière visite

Tout ce qui a été posté par LUDWIG

  1. LUDWIG

    vl-catch-all-apply

    Voici donc enfin ma routine...
  2. 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 lignes NOTE 2 : j'aurais pu passer le chemin du répertoire en variable
  3. LUDWIG

    vl-catch-all-apply

    BonusCad et (Gile), vous êtes des Dieux du Lisp ! :yltype: Evidemment, a marche mieux comme ça, et le mieux, c'est que je crois que j'ai compris (!) Qu'il est pointilleux ce langage ! Je rêve d'un lisp qui serait mon ami et qui comprendrait de suite se que je veux faire :heartpump:
  4. LUDWIG

    Problème pasteclip

    C'est quand tu copies avec point de base (_copybase) que tu as l'impression que ça ne fonctionne pas, ou quand tu colles (_pasteclip) ? Le message pasteclip dans la ligne de commande es normal, c'est la commande qui est lancée quand on fait un "coller" dans autocad. Si tu as l'impression que le "coller" ne fonctionne, c'est peut-être que ce que tu colles est trop petit, trop grand (dans ce cas un zoom étendu te le confirmera) ou trop loin (idem) pour être directement visible. Ou alors le calque des objets que tu copies et désactivé ou gelé dans le dessin.
  5. LUDWIG

    vl-catch-all-apply

    Dans un programme lisp, si une fonction renvoit une erreur, ton programme risque de s'arrêter. Donc, une méthode consiste a d'abord tester si la fonction renvoit une erreur PUIS l'exécuter si c'est OK. Dans mon cas, je fais un lisp pour charger tous les lisps d'un répertoire. Or si le nième lisp de ce répertoire est mal structuré, Autocad envoit une erreur, ma fonction de chargement s'arête et les lisps n+1 et suivant ne seront pas chargés.
  6. LUDWIG

    vl-catch-all-apply

    J'essayes de passer une variable pour les arguments d'une fonction que je veux tester par vl-catch-all-apply (vl-catch-all-apply 'load '("c:\\toto.lsp")) fonctionne mais (setq n "c:\\toto.lsp") (vl-catch-all-apply 'load '(n)) ne fonctionne pas ! Comment faire ?
  7. LUDWIG

    Tester le chargement

    Sauf que je n'arrive pas à passer une variable pour le chemin du lisp : (vl-catch-all-apply 'load '("c:\\toto.lso")) fonctionne mais (setq n "c:\\toto.lsp") (vl-catch-all-apply 'load '(n)) ne fonctionne pas !!! EDIT : j'en ai fait un nouveau sujet [Edité le 13/4/2006 par LUDWIG]
  8. LUDWIG

    Tester le chargement

    Ben voilà, encore une fois c'était un problème de syntaxe ! (vl-catch-all-apply 'load '("Mon_Lisp") fonctionne ! Merci beaucoup
  9. Sergeluc : merci pour vl-vbaload que je n'avais pas réussi à trouver dans l'aide (si si, j'avais cherché). En plus, c'est super, cette commande n'engendre pas de boîte de dialogue si le DVB est déjà chargé ! Bonuscad : c'est le chargement (load) et non pas l'exécution (run) que je cherchais.
  10. Bonjour, Je fais un lisp qui charge les applications (dvb, fas, lsp, arx) présent dans un répertoire et ses sous répertoires. Or quand le chargement d'une application échoue, mon lisp s'arrête sans charger le reste des applications. Cet échec est due à une mauvaise syntaxe de l'application, mais mon but n'est pas de la modifier. Comment tester la bonne exécution d'un "load" ? J'ai essayé avec vl-catch-all-apply mais soit je n'ai pas mis la bonne syntaxe, soit il n'arrive pas à capter l'erreur. (setq err (vl-catch-all-apply (load n))) ou (setq err (vl-catch-all-apply '(lambda ()(load n)))) ne changent rien, j'ai toujours l'erreur
  11. Je charge les DVB par un (command "-vbaload" "appli") Mais s'il est déjà chargé, j'ai un message d'erreur... En attendant plus efficace, je le décharge d'abord avant de le charger (!!!) (command "vbaunload" "appli")(command "-vbaload" "appli")
  12. Super ! Merci ! Mais pour les DVB ?
  13. LUDWIG

    Liste de fichier

    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
  14. Bonjour à tous J'essaye d'appliquer cette formule (if (not c:appli) (load "appli")) pour ne charger un lisp que s'il n'est pas déjà charger... J'ai l'impression que ça ne marche que pour les lisps... Comment le formuler pour des DVB, ARX, etc... ? Merci d'avance
  15. LUDWIG

    C\'est pour quand ?

    ah ça y est je l'ai en téléchargement sur le site ADN
  16. Je m'y met (mais je n'ai pas autocad, je ne peux pas tester) juste pour la décompisition : exporter en wmf puis réimporter et exploser
  17. LUDWIG

    Liste de fichier

    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+
  18. LUDWIG

    Liste de fichier

    Ca m'intéresse effectivement. 1 - je charge l'arx de doslib 2 - 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
  19. LUDWIG

    Liste de fichier

    Je voulais éviter de faire appel à une fonction externe, mais ce sera peut-être plus simple en fait... alors je regarde ça. Merci
  20. LUDWIG

    Liste de fichier

    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é ?).
  21. LUDWIG

    Liste de fichier

    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...
  22. Bonjour à tous Je suis impatient de découvrir Autocad 2007 (et éventuellement Autodesk Architectural Desktop et ABS) EN FRANCAIS. Mais je n'ai trouvé aucune info officielle sur les dates de sortie, juste quelques réponses vagues... Quelqu'un saurait-il me donner une information claire et sûre, ou au contraire n'y en a t'il pas ? Merci d'avance de répondre à mon impatience... :D
  23. LUDWIG

    LMAN 2 ?

    C'est déjà possible me semble t'il : -calque ou _-layer pour les bilingues G (pour geler) ou _F pour les bilingues (freeze) nom des calques ou filtres utilsant les caractères génériques (*toto*) Sinon, concernant la gestion par entité, il est possible des les désactiver indépendamment de l'état du calque : Inactiver calques, mais des objets? Dans Autodesk Architectural Desktop (et sans doute d'autres logiciels), cette fonction est présente en base et se nomme isoler / masquer [Edité le 7/4/2006 par LUDWIG]
  24. Tu veux dire un ou plusieurs calques appartenant à un autre calque principal ; quand on gèle le pricipal, les sous calques seraient gelés ? J'avais déjà imaginé une telle structure, mais je crois que ce serait un peu dur à gérer, surtout niveau programmation, non ? A défaut tu peux utiliser les groupes de calques. [Edité le 7/4/2006 par LUDWIG]
  25. (Je crois que) si les différents corps d'état ne te fournissent pas des fichiers 3D, tu ne tireras rien d'intéressant à utiliser ABS, à moins de tout redessiner.
×
×
  • 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é