Afficher des messages en AutoLISP

Tu as remarqué ? AutoCAD® est parfois un peu autiste. Tu lui lances une super routine, il fait le boulot, et à la fin… silence radio (ou pire, il affiche un mystérieux nil).

Pour qu’il communique avec toi, il faut lui apprendre à parler. C’est là qu’interviennent les 4 Fantastiques de l’affichage. Ils se ressemblent, mais chacun a son petit caractère.

Voici le casting ! :clapper_board:


1. PROMPT : Le Crieur Public :loudspeaker:

Lui, c’est le plus simple. Il sert uniquement à afficher un message dans la ligne de commande.

  • Son job : Afficher du texte.

  • Sa limite : Il ne comprend QUE le texte (les chaînes). Si tu lui donnes un nombre, il plante.

  • Son retour : Il renvoie toujours nil (rien).

(prompt "\nBonjour Patrick !")
;; Affiche : Bonjour Patrick !
;; Renvoie : nil

2. PRINC : Le Professionnel Propre :sparkles:

C’est le chouchou des développeurs. Il est polyvalent et « propre ».

  • Son job : Il affiche n’importe quoi (texte, nombres, listes).

  • Sa spécialité : Il enlève les guillemets des textes. Il affiche le contenu « humain ».

  • L’Astuce de Jedi : Tu as remarqué que tes routines finissent souvent par afficher nil dans la ligne de commande ? C’est parce qu’AutoCAD® affiche toujours le résultat de la dernière ligne.

Pour éviter ça, on met (princ) tout seul à la toute fin du code. C’est comme dire « Silence, j’ai fini ».

(setq texte "Coucou")
(princ texte)
;; Affiche : Coucou (Sans les guillemets !)

3. PRIN1 : Le Brut de Décoffrage :building_construction:

Lui, il ne fait pas de manières. Il affiche les données telles qu’elles sont codées.

  • Son job : Afficher la donnée brute.

  • Sa spécialité : Il garde les guillemets et les caractères spéciaux. C’est utile si tu veux sauvegarder des données dans un fichier pour qu’AutoCAD® puisse les relire plus tard.

(setq texte "Coucou")
(prin1 texte)
;; Affiche : "Coucou" (Avec les guillemets !)

4. PRINT : Celui qui veut de l’espace :couch_and_lamp:

C’est le frère jumeau de PRIN1 (il garde les guillemets), mais il est claustrophobe.

  • Son job : Afficher la donnée brute.

  • Sa spécialité : Il saute toujours une ligne avant d’écrire, et ajoute un espace après.

(print "Coucou")
;; Affiche :
;; (Saut de ligne)
;; "Coucou" (Saut de ligne)

:boxing_glove: Le Match : PRINC vs PRIN1

C’est là que tout se joue. Regarde bien la différence avec un texte qui contient des caractères spéciaux (comme \n pour nouvelle ligne).

Imagine le texte : "Ligne1\nLigne2"

  • PRINC (Le traducteur) va interpréter le code :

Ligne1

Ligne2

  • PRIN1 (Le robot) va afficher le code :

"Ligne1\nLigne2"

En résumé

  1. Tu veux juste dire un truc à l’utilisateur ? :backhand_index_pointing_right: PROMPT

  2. Tu veux afficher un résultat propre ou finir ta routine en silence ? :backhand_index_pointing_right: PRINC (Le plus utilisé !)

  3. Tu veux voir le code brut ou déboguer ? :backhand_index_pointing_right: PRIN1

  4. Tu veux que ça saute une ligne tout seul ? :backhand_index_pointing_right: PRINT

  • Utile
  • Peut mieux faire
  • Inutile
0 votant

:right_arrow: Tous les tutos AutoLISP