Dans cette page il est question de fonctions
à utiliser quand on rencontre des "erreurs"
dans l'utilisation d'un programme :
*error* pour gérer les erreurs
ALERT pour afficher des messages depuis un LSP dans AutoCAD
EXIT pour sortir de l'application en cours
QUIT pour sortir de l'application en cours
(cliquer sur la fonction
pour un accès direct dans la page)
*error*
Gestion des erreurs
Toutes les routines AutoLISP devraient doivent contenir une gestion des erreurs.
Il n'y a pas grand-chose de pire que d'exécuter une routine et de découvrir qu'une fois qu'elle a été lancée, ou annulée, les variables système, les accrochages etc. furent modifiés et rien ne fonctionne plus comme avant.
La fonction (*error*) va garantir qu'AutoCAD puisse retourner à un état particulier après qu'une erreur se soit produite dans le code de programmation ou dans les entrées des l'utilisateur.
Cette fonction est à insérer dans le code pour évaluer la condition d'erreur et renvoyer un message approprié à l'utilisateur.
Si AutoCAD rencontre une erreur lors de l'évaluation, il renvoie un message.
Syntaxe : (*error* message)
message est une chaîne de caractères (string) contenant une description de l'erreur et transmise par AutoCAD.
Dans un premier temps on va gérer une sortie "sauvage" de l'utilisateur par un appui sur la touche "echap".
Si cela se passe en cours de programme il va être intéressant de revenir à l'état initial avant le lancement du programme, c'est à dire que si des entités ont été créées par le programme, les effacer, si un ou des calques ont été créés les supprimer et pour finir remettre les accrochages par défaut dans l'état initial.
Dans le code qui suit, on va mémoriser un état, puis le changer pour le temps du programme, choisir trois points, créer un nouveau calque, dessiner une "ligne" dans ce nouveau calque puis sortir tranquillement, MAIS si entre le choix des points vous appuyez sur la touche "Echap" cela va lancer la gestion des erreurs et donc la fonction (re_init).
Cette fonction a été affectée à la variable *error* en deuxième ligne du code et consiste en un appel à la fonction interne UNDO, création d'une "marque" et lorsque (re_init) se lancera le fichier reviendra dans l'état où il était au moment de le création de la "marque", c'est à dire qu'il va supprimer le calque créé, les lignes dessinées...
Si le programme s'exécute sans souci, sans que la touche Echap soit pressée il n'y aura pas d'appel à la fonction (re_init) mais si entre la sélection des points l'utilisateur appuie sur "Echap", détection d'une erreur donc appel de (re_init).
Le code en image :
Et maintenant le code en texte copiable
EN COURS DE MISE À JOUR
Sortie forcée du programme
Il arrive que lorsque des tests n'arrivent pas à se vérifier ou que des valeurs dépassent ce qui est attendu normalement le programmeur veuille prévoir une sortie du programme un peu comme une issue de secours et ces deux fonctions (sans argument) s'en chargent.
EXIT
Force la sortie de l'application
Syntaxe : (exit)
QUIT
Force le programme à quitter l'application en cours en renvoyant le message : "quit/exit abort" et revient à la ligne de commande AutoCAD
Syntaxe : (quit)
ALERT
Affichage d'une case d'information
Il est quelquefois utile de "parler" à l'utilisateur, cette fonction permet d'ouvrir une boîte simple avec des messages textuels, plus tard quand je vous parlerai du DCL vous saurez faire vos propres boîtes de dialogue plus interactives car cette fonction ne présente pas de possibilités de créer des boutons supplémentaires, le seul qui se présentera sera le bouton OK, autrement dit on passe un message, il est lu et on ferme la boîte.
Parlons donc de cette case d'alerte (alert) :
Syntaxe : | (alert "message") |
Argument :
|
message, une chaîne de caractère qui apparaitra dans une case de dialogue sur l'écran d'AutoCAD. On peut utiliser le caractère de retour à la ligne \n et le caractère de tabulation \t |
Valeur retournée : | nil |
Exemples :
(alert "ceci est un message") |
Résultat dans l'affichage de AutoCAD :
(alert "ceci est un autre message \n avec retour à la ligne") |
Résultat visuel dans AutoCAD :
(alert "en voilà un autre \n \t avec une tabulation") |
Résultat dans l'affichage d'AutoCAD :
La fonction (alert) n'affiche que des chaînes de caractères (string) en message,
aussi il faut penser à transformer les données numériques en chaînes de caractères avant de les passer en argument de (alert).
Pour ce faire rendez-vous dans le menu "conversions" où ces fonctions sont explicitées.
01 décembre 2017,
mise à jour le 18 avril 2018