Les Entrées utilisateurs en AutoLISP

C’est le moment de rendre ton AutoCAD® bavard ! :speaking_head:

Jusqu’ici, tes routines vivaient dans leur bulle. Avec la famille des fonctions get..., elles vont enfin pouvoir te poser des questions. C’est ce qu’on appelle l’interface utilisateur (ou « l’interrogatoire », selon l’humeur).

Voici les membres de la famille, du plus simple au plus capricieux.

:light_bulb: L’astuce vitale avant de commencer

Tu verras souvent \n au début de mes messages.

Cela veut dire « Nouvelle Ligne » (New Line). Sans ça, ta question risque de s’afficher collée au texte précédent dans la ligne de commande et personne ne la verra. C’est la politesse du codeur !


1. getint : Pour les comptes ronds :1234:

Il veut un Entier (Integer). Pas de virgule, pas de demi-mesure.

Idéal pour demander un nombre de copies ou un numéro de dossier.

(setq nb (getint "\nCombien de copies voulez-vous ? "))
;; L'utilisateur tape 5 -> nb vaut 5
;; L'utilisateur tape 5.5 -> AutoCAD râle : "Nécessite un entier."

2. getreal : Pour les matheux :straight_ruler:

Lui, il accepte tout : entiers ou nombres à virgule (Réels).

C’est brut : tu tapes un chiffre, point barre.

(setq largeur (getreal "\nEntrez la largeur : "))

3. getpoint : « X marque l’emplacement » :round_pushpin:

C’est le plus utilisé. Il demande à l’utilisateur de cliquer quelque part (ou de taper des coordonnées).

Il renvoie une liste de 3 nombres (X Y Z).

(setq pt (getpoint "\nCliquez le point de départ : "))
;; Résultat : (150.5 200.0 0.0)

4. getdist : Le Géomètre (Le plus cool :smiling_face_with_sunglasses:)

Il ressemble à getreal, mais en mieux.

Il demande une distance. L’utilisateur peut :

  1. Taper « 10.5 ».

  2. Cliquer deux points à l’écran ! AutoCAD® affiche l’élastique visuel. C’est beaucoup plus intuitif pour l’utilisateur.

(setq long (getdist "\nQuelle longueur (tapez ou cliquez) ? "))

5. getstring : Le Bavard :writing_hand:

Pour demander du texte. Mais attention, il y a un piège classique !

Par défaut, dans AutoCAD®, la barre Espace sert à valider (comme Entrée).

Donc si tu tapes « Mur Brique », AutoCAD® s’arrête après « Mur ».

Pour autoriser les espaces, il faut mettre le drapeau T (True) en premier argument.

;; Méthode "Un seul mot" (L'espace valide)
(setq nom (getstring "\nTon Prénom : "))

;; Méthode "Phrase complète" (L'espace est un espace)
(setq phrase (getstring T "\nDécris le projet : "))

6. getkword : Le QCM (Questions à Choix Multiples) :clipboard:

C’est le plus strict. Il oblige l’utilisateur à choisir parmi une liste de mots-clés définis à l’avance.

Il ne marche pas tout seul ! Il faut d’abord préparer le terrain avec initget.

;; 1. On définit les choix autorisés (Bleu, Rouge, Vert)
(initget "Bleu Rouge Vert")

;; 2. On pose la question
(setq choix (getkword "\nQuelle couleur ? [Bleu/Rouge/Vert] : "))

;; Si l'utilisateur tape "Jaune", AutoCAD répond : "Option incorrecte".
;; Si l'utilisateur tape juste "B", AutoCAD comprend "Bleu". Magique !

Résumé pour ne pas se tromper

  • Tu veux compter des moutons ? :backhand_index_pointing_right: getint

  • Tu veux une mesure précise ? :backhand_index_pointing_right: getdist (mieux que getreal)

  • Tu veux une position ? :backhand_index_pointing_right: getpoint

  • Tu veux du texte ? :backhand_index_pointing_right: getstring (n’oublie pas le T pour les phrases)

  • Tu veux contrôler le choix ? :backhand_index_pointing_right: initget + getkword

  • Utile
  • Peut mieux faire
  • Inutile
0 votant

:right_arrow: Tous les tutos AutoLISP