J’écris des routines AutoLISP pour AutoCAD et je trouve qu’il est parfois difficile de faire communiquer le programme avec l’utilisateur. Comment puis-je afficher des messages, des variables ou des résultats de manière efficace dans la ligne de commande ?
Pour faire communiquer AutoCAD avec l’utilisateur via AutoLISP, il est essentiel de comprendre les fonctions d’affichage. Chaque fonction a ses spécificités pour présenter des informations dans la ligne de commande ou pour le débogage, évitant ainsi un comportement « silencieux » du programme.
Voici les quatre fonctions principales pour afficher des messages en AutoLISP :
-
prompt: Le Crieur Public- Action : Affiche un message simple dans la ligne de commande.
- Spécificité : Accepte uniquement les chaînes de caractères (texte). Tenter d’afficher un nombre provoquera une erreur. Il ne renvoie rien (
nil). - Quand l’utiliser : Pour des messages d’information courts et directs à l’utilisateur.
- Exemple :
(prompt "\nBonjour, monde !")
-
princ: Le Professionnel Propre- Action : Affiche n’importe quel type de donnée (texte, nombres, listes) de manière « propre » et lisible.
- Spécificité : Supprime les guillemets autour des chaînes de caractères et interprète les caractères spéciaux (comme
\npour un saut de ligne). C’est la fonction la plus couramment utilisée pour un affichage destiné à l’utilisateur. - Astuce de Jedi : Placé seul à la fin d’une routine,
(princ)permet de supprimer l’affichage du résultat de la dernière expression LISP (souventnil) dans la ligne de commande, offrant une fin de routine « silencieuse ». - Quand l’utiliser : Pour afficher des résultats, des variables, ou pour terminer une routine sans affichage parasite.
- Exemple :
(princ "\nLe résultat est : ") (princ 123.45)
-
print: Le Brut de Décoffrage- Action : Affiche la donnée telle qu’elle est codée, y compris les guillemets et les caractères spéciaux non interprétés.
- Spécificité : Utile pour le débogage ou pour afficher des données qui doivent être relues ultérieurement par AutoLISP (par exemple, lors de l’écriture dans un fichier).
- Quand l’utiliser : Pour le débogage, l’affichage de données brutes ou la sauvegarde de données.
- Exemple :
(print "Ceci est un \"test\" avec \\n")
-
prin1: Celui qui veut de l’espace- Action : Similaire à
print, il affiche la donnée brute (avec guillemets et caractères spéciaux non interprétés). - Spécificité : Ajoute systématiquement un saut de ligne avant l’affichage et un espace après.
- Quand l’utiliser : Pour un affichage brut avec un formatage automatique (saut de ligne avant, espace après), souvent pour le débogage.
- Exemple :
(prin1 "Donnée brute avec \\n")
- Action : Similaire à
En résumé pour choisir la bonne fonction :
- Pour un message simple à l’utilisateur : Utilisez
prompt. - Pour afficher un résultat propre, des variables, ou pour terminer une routine en silence : Utilisez
princ(le plus polyvalent). - Pour voir le code brut d’une donnée ou pour le débogage : Utilisez
print. - Pour un affichage brut avec un formatage automatique (saut de ligne avant, espace après) : Utilisez
prin1.