DenisHen Posté(e) le 20 mai 2017 Posté(e) le 20 mai 2017 Bonjour à tous. Voilà, je cherche à supprimer tout les caractère à droite d'un "_" dans une chaine. Je m'explique, je remplace des blocs nommés "CA03_1" "CA03_2, "CA03_3" ainsi de suite par le bloc "CA03". Bien sûr, la position du "_" n'est pas toujours la même... Donc, dans un (subst, je ne sais pas trop quoi mettre ensuite...J'ai une liste de paires pointées : (setq LstBlk '( ; ("AA04_*" . "AA04") ("AA05_*" . "AA05") ("AB01_*" . "AB01") ("AB03_*" . "AB03") ("AF01_*" . "AF01") ("AF03_*" . "AF03") ("AF05_*" . "AF05") ... ) ) ;_ Fin de setq Et la liste est longue et, pas complète, je l'augmente à mesure que je trouve des "nouveaux" blocs.Et voici ma boucle : (foreach PosLstBlk LstBlk (setq n 0) (if (setq Select (ssget "_X" (list (cons 0 "INSERT") (cons 2 (car PosLstBlk))))) (while (setq ent (ssname Select n)) (setq elst (entget ent)) (setq elst (subst (cons 2 (cdr PosLstBlk)) (assoc 2 elst) elst)) (entmod elst) (setq n (+ n 1)) ) ;_ Fin de while ) ;_ Fin de if ) ;_ Fin de foreach Je suis sûr que je peut éviter la liste des paires... J'ai essayé avec un (vl-position mais je tourne en rond... Si quelqu'un a une astuce, un conseil... Je suis preneur... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
(gile) Posté(e) le 20 mai 2017 Posté(e) le 20 mai 2017 Salut, La fonction substr retourne la sous-chaîne depuis l'index spécifié (base 1) et, optionnellement, de la longueur spécifiée.La fonction vl-string-position retourne la position d'un caractère dans une chaîne.Ce que veux obtenir, c'est la sous-chaine depuis le premier caractère (indice 1) d'une longueur égale à la position du caractère "_". (substr str 1 (vl-string-position (ascii "_") str)) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
DenisHen Posté(e) le 20 mai 2017 Auteur Posté(e) le 20 mai 2017 Salut (gile), et merci, encore une fois, pour ton aide précieuse... Mais je ne comprend pas où ça déconne, voici ce que j'ai fais : (setq ss nil) (if (setq ss (ssget "_X" '((0 . "INSERT")))) (progn (setq i 0) (while (setq ent (ssname ss i)) (setq i (1+ i) elst (entget ent) BlkNom (cdr (assoc 2 elst)) ) ;_ Fin de setq (princ (strcat "\nNom du bloc=" BlkNom)) (if (/= (vl-string-position (ascii "_") BlkNom) nil) (progn (setq elst (subst (cons 2 (substr BlkNom 1 (vl-string-position (ascii "_") BlkNom)) (assoc 2 elst) elst))) (entmod elst) ) ;_ Fin de progn ) ;_ Fin de if (setq n (+ n 1)) ) ;_ Fin de while ) ;_ Fin de progn ) ;_ Fin de if Et AutoCAD me répond :; erreur: type d'argument incorrect: numberp: nil Je ne sais pas où est l'erreur... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Patrick_35 Posté(e) le 20 mai 2017 Posté(e) le 20 mai 2017 Salut Tu peux faire aussi, par exemple(vl-list->string (vl-remove (ascii "_") (vl-string->list "123_456_789"))) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
(gile) Posté(e) le 20 mai 2017 Posté(e) le 20 mai 2017 Je ne sais pas où est l'erreur... Pour savoir ou est l'erreur, tu peux utiliser la méthode décrite chapitre 4.5 de "Introduction à AutoLISP" :Si le déroulement d’une routine génère une erreur, on peut déterminer l’expression en cause en activant Arrêt sur erreur (Menu Débogage), puis en utilisant l’outil : Source de la dernière interruption (Ctrl+F9). Une fois l’erreur localisée, on doit Réinitialiser(Ctrl+Q). Je pense que ça devrait être : (setq n (+ n 1)) où n est nil. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
DenisHen Posté(e) le 21 mai 2017 Auteur Posté(e) le 21 mai 2017 Salut, et merci pour votre aide. (gile) : je n'arrive pas à utiliser le debogueur, tout ses icones sont toujours grisés. Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
DenisHen Posté(e) le 22 mai 2017 Auteur Posté(e) le 22 mai 2017 Salut à tous. Lorsque je place, dans Visual LISP, un point d'arrêt (F9), j'enregistre et recharge ce Lisp dans AutoCAD, la routine ne s'arrête pas sur ce point, elle est exécuté dans sa totalité... Qu'est-ce que je fais de mal ? Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
(gile) Posté(e) le 22 mai 2017 Posté(e) le 22 mai 2017 Salut, Difficile à dire...As-tu essayé avec plusieurs points d'arrêt a des endroits différents ? Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
DenisHen Posté(e) le 22 mai 2017 Auteur Posté(e) le 22 mai 2017 Salut (gile) et merci pour ta réponse. Oui, je viens de le faire, sans changement... Et lorsque je retourne dans Visual LISP, il n'y a plus de points d'arrêt... Où dois-je les placer, avant une parenthèse, après...? Du coup, je ne sais toujours pas ce qui cloche dans mon code :( Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
(gile) Posté(e) le 22 mai 2017 Posté(e) le 22 mai 2017 Salut, Un petit screencast pour montrer quelques fonctions de débogage de l'éditeur Visual LISP.Mais qu'un code soit débogué (qu'il ne génère plus d'erreurs) ne veut pas dire qu'il fonctionne comme attendu.On ne renomme pas des référence de bloc, on renomme les définitions de bloc... 2 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
didier Posté(e) le 22 mai 2017 Posté(e) le 22 mai 2017 Coucou Finalement il l'a eue ou pas sa formation AutoLisp l'ami DenisHEN ?C'est plus que du service après-vente (hihi) Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
lecrabe Posté(e) le 22 mai 2017 Posté(e) le 22 mai 2017 Hello Notre Didier "Le moqueur humoriste défendeur de la vieille langue française" a encore frappé ! Bye, lecrabe Autodesk Expert Elite Team
DenisHen Posté(e) le 23 mai 2017 Auteur Posté(e) le 23 mai 2017 Finalement il l'a eue ou pas sa formation AutoLisp l'ami DenisHEN ?Pas encore, mais ça arrive... C'est début juin... Mais pas où je voulais... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
DenisHen Posté(e) le 23 mai 2017 Auteur Posté(e) le 23 mai 2017 (gile), que dire... Génial, je comprend maintenant le débogueur... :) Tu peur le "clouer" dans "Débuter en LISP", je suis sur que ça servira à d'autres... Et j'ai trouvé les erreurs, comme dans ton exemple... Et ma routine fonctionne super... Encore un super grand merci à toi... ;) Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
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