BiO_GetPoint

Fonction Catégorie Version
BIO 01 BiO_GetPoint Gestion Entrées Utilisateur 1.0 - Janvier 2007

Description

But Demande d'entrer un point en proposant l'ancienne valeur.
Prototype (BiO_GetPoint Message Pt_courant Pt_Défaut)
Argument Message : - Le message qui sera affiché - chaîne -
Pt_courant : - La valeur courante de la variable - Liste -
Pt_Défaut : - Valeur proposée par défaut - Liste -
Retours Les coordonnées d'un point - liste -
Var. globales Néant
Description BiO_GetPoint interrompt la tâche en cours pour demander de saisir un point, en proposant la valeur précédente si la variable a déjà été utilisée ou, sinon une valeur par défaut.
Notes C'est la fonction GetPoint améliorée, la version normale ne proposant pas de valeur précédente ni de valeur par défaut.
La valeur par défaut doit être une liste
Exemples

Command: 
(setq P1 (BiO_GetPoint "Position : " P1 (list 5 2 7)))
Position : <5,2,7> : 
   [cliquage d'un point à l'écran]
   (46.5 245.23 0.0)   ------- le résultat
	
Command: 
(setq P1 (BiO_GetPoint "Position : " P1 (list 5 2 7)))
Position : <46.5000,245.2300> : 		
   [Touche entrée]
   (46.5 245.23 0.0)   ------- le résultat
   
Command: 
(setq Pt2 (BiO_GetPoint "Position : " P1 '(7 4 8)))
   Position : <46.5000,245.2300> :		
   [piquage 1 point]
   (144.5 255.43 0.0)   ------- le résultat

Autre exemple	

Command: 
(setq z1 (BiO_GetPoint "Entrez 1 point : " z1 z2))
   Position : <0.0000,0.000> : 			
   [Touche entrée]
   (0.0 0.0 0.0)   ------- le résultat
  Dans ce cas les arguments z1 et z2 sont "nil"

La fonction


  1- (defun BiO_GetPoint (*Msg *Val_cour *Defo / Reponse)

  2-    (if (not *Defo)
  3-        (setq *Defo (list 0.0 0.0 0.0))
  4-    )
  5-    (if (not *Val_cour)
  6-        (if (listp *Defo) 
  7-            (setq *Val_cour *Defo)
  8-            (setq *Val_cour (list 0.0 0.0 0.0))
  9-        )
 10-    )
 11-    (setq Reponse (getpoint (strcat *Msg 
 12-                                    " <" 
 13-                                    (rtos (car *val_cour)) 
 14-                                    "," 
 15-                                    (rtos (cadr *val_cour))
 16-                                    (if (caddr *val_cour)
 17-                                    (strcat "," (rtos (caddr*val_cour)))
 18-                                    ""
 19-                                    )
 20-                                    ">: ")))
 21-    (if (equal Reponse nil) 
 22-         *Val_cour 
 23-         Reponse
 24-    )
 25- )
Lignes 2-4 :  Pour éviter les messages d'erreur, si l'argument 'valeur par défaut' est nul.
Ligne 5 :     Si l'argument 'valeur courante'  est nul,
Ligne 7 :       Donne-lui la valeur de l'argument 'valeur par défaut', si celui-ci 
                   est une liste.
Ligne 8 :       Sinon,  la valeur par défaut n'est pas une liste, 
                   donne lu la valeur '(0 0 0).
Lignes 11-20 : Affiche le message et les coordonnées qui seront prises en compte si on 
                   actionne la touche "Entrée"
Ligne 13 :      La valeur en X (1er élément de la liste 'Valeur_Courante')
Ligne 15 :      La valeur en Y (2ème élément de la liste 'Valeur_Courante')
Lignes 16-17 :  Si elle existe, la valeur en Z (3ème élément de la liste 'Valeur_Courante'
Ligne 18 :			Sinon rien
Ligne 21 :     Si on a appuyé sur la touche "Entrée" (donc sans piquer un point),
Ligne 22 :       Retourne la valeur courante
Ligne 23 :       Sinon les coordonnées du point indiqué.

List : Prend un nombre quelconque d'expressions et les regroupe dans une liste.
Listp : Retourne T si *Defo est une liste, nil dans les autres cas.
Rtos : Convertit un nombre réel en chaîne.
Car : Renvoie le premier élément d'une liste.
Cadr : Second élément d'une liste - Equivaut à (car (cdr *Val_cour)).
Caddr : 3ème élément d'une liste - Equivalent à (car (cdr(cdr *Val_cour))).