INITGET
Contrôle des entrées utilisateurs
Il est quelquefois bien souvent important que l'utilisateur ne rentre pas certaines données en réponse à une attente d'un programme, par exemple : entrer un nombre négatif pour un programme qui calcule une racine carrée ce qui engendrera illico une erreur, il vaut donc mieux interdire à l'utilisateur de saisir des nombres négatifs, c'est plus fiable.
La saisie de la prochaine entrée de l'utilisateur est testée par (initget).
Les fonctions qui acceptent le contrôle par initget sont :
(getint), (getreal), (getdist), (getangle), (getorient), (getpoint), (getcorner), (getkword), (entsel), (nentsel), et (nentselp).
Les exceptions sont (getstring) et (getvar) qui n'acceptent pas le contrôle de (initget).
Si l'entrée utilisateur ne remplit pas la ou les conditions spécifiées (par exemple, entrée d'une valeur zéro quand cela n'est pas permis), AutoLISP affichera un message et demandera à l'utilisateur de faire une nouvelle saisie.
Syntaxe : | (initget [bits] [message]) |
Tableau des différentes valeurs de bits (additionables):
1 | Interdit une entrée vide |
2 | Interdit la valeur 0 (zéro) |
4 | Interdit une valeur négative |
8 | Autorise de renseigner un point en dehors des limites, même si LIMCHECK est actif |
16 | Inutilisé par le logiciel actuellement |
32 | Dessine la ligne élastique de sélection de point (comme dans getpoint) en pointillés |
64 | Ignore le renseignement Z du point choisi pour la fonction (getdist), une distance 2D est renvoyée même si les points ont des altitudes différentes |
128 | ce paragraphe est en cours de description, à suivre ... |
256 | ce paragraphe est en cours de description, à suivre ... |
512 | ce paragraphe est en cours de description, à suivre ... |
1024 | ce paragraphe est en cours de description, à suivre ... |
Dans les versions futures d'autres valeurs existeront sans doute.
l'argument "chaîne" est facultatif et spécifie une liste de mots-clés identifiés
(initget) est renseigné sous forme de valeurs binaires elles peuvent donc être combinées, par exemple : interdire une entrée nulle (valid à vide) mais interdire aussi un nombre négatif
(initget (+ 1 4)) |
qui est la combinaison des bits 1 et 4
Je vais reprendre les exemples qu'on a l'habitude de voir un peu partout mais ils sont explicites, par exemple demander l' âge de l'utilisateur :
1 2 | (initget ( + 1 2 4)) (setq age-capitaine (getint "\nQuel est votre âge ?\n")) |
L'appel à (initget) interdira une entrée vide, la question sera reposée si c'est le cas, interdira aussi la valeur 0 (zéro) le cas d'un bébé qui répond n'est pas prévu et interdira aussi une valeur négative.
Si quelqu'un veut répondre 13.5 ce sera refusé aussi mais pas à cause d'initget ce sera parce que on a mis un (getint) qui attend un nombre entier (integer) et qui ne supportera pas une autre forme d'entrée.
Avec option de mot-clé :
Cet appel à (initget) interdit les entrées nulles (bit 1) et établit une liste de mot clés, Pi et Deux-Pi.
La fonction (getreal) permettra d'obtenir un nombre réel en affichant le message : Pi/Deux-pi/<nombre>:
Le résultat sera placé" dans un symbole local num.
Si l'utilisateur entre un nombre, celui-ci sera renvoyé par (getnum), nom de la fonction, toutefois si l'utilisateur entre un mot clé, Pi ou simplement P, (getreal) va renvoyer le mot-clé Pi et la fonction (cond) va finalement renvoyer Pi (3.14159....) en détectant la correspondance de réponse (fonction eq).
Toutes les fonctions n'acceptent pas tous les codes en voici un résumé pour les principales :
getint | accepte | 1 2 4 |
getreal | accepte | 1 2 4 |
getdist | accepte | 1 2 4 32 |
getorient | accepte | 1 2 32 |
getpoint | accepte | 1 8 32 |
getcorner | accepte | 1 8 32 |
revenir au menu ENTRÉES UTILISATEUR
20 octobre 2017