Aller au contenu

[Résolu] Comment sortir d'un (while ?


DenisHen

Messages recommandés

Bonjour à tous.

 

Voilà, aujourd'hui, je cherche à sélectionner plusieurs textes dans plusieurs bloques, je concatène le tout et je fais un MText avec.

 

Pour l'instant, je n'arrive pas à sortir de ma boucle (while lorsque je ne clique plus de texte, donc, au moment ou j'écrirais le MText.

 

Voici mon bout de code :

(defun c:DHTest ()
 (while (/= Text "")
   (setq Obj (entget (car (nentsel "\nSélectionnez le texte dans le bloc :"))))
   (setq Text (cdr (assoc 1 Obj)))
   (princ Text)
 ) ;_ Fin de while
 (princ)
) ;_ Fin de defun

Et voici le résultat, je sélectionne deux textes (22-03-05 et 22-03-04) puis, je fais [ENTRER], voici le résultat :

Commande: DHTEST

Sélectionnez le texte dans le bloc :22-03-05

Sélectionnez le texte dans le bloc :22-03-04

Sélectionnez le texte dans le bloc :

; erreur: type d'argument incorrect: lentityp nil

Donc, je ne sors jamais de ma boucle, elle s'interrompt toute seule... Avec "lentityp", et je ne trouve pas grand-chose là-dessus...

 

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)

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

en fait le lisp s'arrète à la ligne

(setq Text (cdr (assoc 1 Obj)))

car Obj = nil, du coup il y a une erreur.

Il vaudrais mieux faire:

(defun c:DHTest (/ Text) ; Text est à nil au debut de la fonction
 (while (/= Text nil)
   (setq Obj (entget (car (nentsel "\nSélectionnez le texte dans le bloc :"))))
   (if (/= Text nil) (progn
     (setq Text (cdr (assoc 1 Obj)))
     (princ Text)
   ));_ Fin de if
 ) ;_ Fin de while
 (princ)
) ;_ Fin de defun

Aide au téléchargement du cadastre dgfip-download-helper
Insertion de photos géolocalisées exif https://www.dropbox.com/s/gkf6o9ac2hxen97/exifscr.zip?dl=0
Script correction BUG SPDC V2, propriétaire département 21 et 22 : https://greasyfork.org/scripts/442400-spdcv2/code/SPDCV2.user.js

Lien vers le commentaire
Partager sur d’autres sites

Ou encore comme ceci

 

(defun c:DHTest ( / Ent Obj Text)
 (while (setq Ent (nentsel "\nSélectionnez le texte dans le bloc :"))
   (setq Obj (entget (car Ent)))
   (if (/= (setq Text (cdr (assoc 1 Obj))) "")
     (princ Text)
   )
 ) ;_ Fin de while
 (princ)
)

 

Boucler simplement sur une sélection effective.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

comme je suis une buse, je me permet de l'ouvrir mais bon... à prendre avec des pincettes...

While pourrait se traduire par "tant que" donc en français ton while se traduit par tant que Text est différent de vide.

ok,

mais tu parles de texte dans un bloc, j'ai peur que ton Text ne soit jamais vide car il n'est pas réinitialisé dans la boucle. donc si le setq Obj échoue, le setq Text plante

il faudrait tester si obj est vide avant de s'en servir

à confirmer par des fort en code...

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à tous, et merci pour votre aide...

 

C'est mieux comme ça, merci BonusCAD...

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)

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é