stugeol Posté(e) le 14 mai 2012 Posté(e) le 14 mai 2012 Bonjour,En Lisp je voudrais répéter un esemble d'instruction tant que la touche esc n'est pas enfoncer.Je vous remercie par avance de vos solutions.Cordialement. Petit à petit on devient moins petit
Patrick_35 Posté(e) le 14 mai 2012 Posté(e) le 14 mai 2012 Salut Au plus simple, avec une boucle infinie(while ....)Et ensuite, pour peaufiner, avec une gestion d'erreurs @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
stugeol Posté(e) le 14 mai 2012 Auteur Posté(e) le 14 mai 2012 Je ne sait pas encore gerer les erreur en Lisp, je vais faire un petit tour dans l'aide.Je te remercie Patrick pour ton aide.Cordialement. Petit à petit on devient moins petit
stugeol Posté(e) le 14 mai 2012 Auteur Posté(e) le 14 mai 2012 En consultant l'aide voici à quoi j'abouti, mais cela ne fonctionne pas. (defun c:essait () (vl-load-com) (setq errobj (vl-catch-all-apply (progn (setq test1 0) (While (> -1 text1) (command "NCOPY" pause "" "0,0,0" "") (princ) (command "_laycur" "D" "") (princ) ) ) ) ) (if (vl-catch-all-error-p errobj) (progn (print (strcat "An error occurred: " (vl-catch-all-error-message errobj) ) ) (prompt "Voulez-vous continuez? (Y/N) -> ") (setq ans (getstring)) (if (equal (strcase ans) "N") (print "Fin de la fonction essait") (essait) ) ) (print errobj) ) (princ) ) Pourriez vous me guider?Je vous remercie par avance.Cordialement. Petit à petit on devient moins petit
Patrick_35 Posté(e) le 14 mai 2012 Posté(e) le 14 mai 2012 Par exemple(defun c:essai (/ erreur) (defun *myerror*(msg) (or (member (strcase msg) '("FUNCTION CANCELLED" "QUIT / EXIT ABORT" "FONCTION ANNULEE" "QUITTER / SORTIR ABANDON")) (princ (strcat "\nErreur : " msg)) ) (setq *error* erreur) (princ) ) (setq erreur *error* *error* *myerror*) ; rediriger la gestion des erreurs vers sa propre routine (While (c:ncopy) (princ) (command "_laycur" "_last" "") (princ) ) (setq *error* erreur) ; rediriger la gestion des erreurs vers celle d'origine (princ) )Mais il y a un souci avec la gestion des erreurs, car le résultat escompté n'est pas le bon.Comme c'est un lisp des express-tools avec sa propre gestion des erreurs, cela doit venir de là ou encore(defun c:essai() (vl-load-com) (while (not (vl-catch-all-error-p (vl-catch-all-apply 'c:ncopy))) (princ) (command "_laycur" "_last" "") (princ) ) )Ici, il faut utiliser deux echap pour quitter la routine, et cela doit encore être du à la routine des express-tools Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
bryce Posté(e) le 14 mai 2012 Posté(e) le 14 mai 2012 Bonjour, Et en rajoutant simplement un * devant la macro que tu as postée dans un autre sujet, ça n'aurait pas fait l'affaire ? :unsure: *^C^CNCOPY;\;;;_laycur;D;; Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
Patrick_35 Posté(e) le 15 mai 2012 Posté(e) le 15 mai 2012 Bonjour, Et en rajoutant simplement un * devant la macro que tu as postée dans un autre sujet, ça n'aurait pas fait l'affaire ? :unsure: *^C^CNCOPY;\;;;_laycur;D;;Ah oui, c'est exact.Je l'avais oublié celui-là ;) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
stugeol Posté(e) le 15 mai 2012 Auteur Posté(e) le 15 mai 2012 Bonjour à tous et merci,Hier j'ai pris le temps de faire le tour des sujets sur le forum concernant le traitement des erreurs, il me reste à assimiler et à tester.En ce qui concerne * en début de la macro c'est déjà fais, et sa fonctionne bien.En parallèle je suis en train de réfléchir sur une routine me perméttant d'extraire une partie du dessin, à partir d'une polyligne fermée pouvant contenir des arcs, et je profitais de cet exemple simple pour apprendre à traiter les erreurs en Lisp.Hier soir j'ai pris le temps de faire le tour des sujets concernant le traitement des erreurs sur le forum, j'ai plus qu'à assimiler et à tester.Je vous remercie encore pour vos pistes et vos astuces.cordialement. Petit à petit on devient moins petit
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