AutoCAD LISP : Quelles fonctions utiliser pour afficher des messages ?

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 :

  1. 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 !")
  2. 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 \n pour 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 (souvent nil) 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)
  3. 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")
  4. 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")

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.