Aller au contenu

Messages recommandés

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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

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é