BiN_Init

Fonction Catégorie Version
BIN 01 BiN_Init Gestion de Fonction 1.0 - Janvier 2007

Description

But Initialisation d'un programme en Autolisp.
Prototype (BiN_Init '(ListModes))
Argument '(ListModes)) - Liste des modes dont on veut conserver les valeurs - Liste -
Retours Néant
Var. globales $MLST, $OldError
Description Conserve la valeur des modes courants avant le début du programme ;
  • Initialise la gestion des erreurs ;
  • Marque le début pour la commande Annuler.
Notes On doit placer dans l'argument tous les modes à conserver (sauf Cmdecho qui sera fait d'office).
Dans le programme à traiter, il faut placer la liste des modes dont on veut sauvegarder les valeurs courantes sous forme d'une liste de chaînes comme argument à BiN_Init.
Le programme stocke ces modes et leurs valeurs correspondantes dans la variable globale $MLST qui sera lue par la routine BiN_Reset en fin de programme.
Les variables stockables ne doivent pas être du type 'protégé contre l'écriture' (à l'exception de 'CLAYER', le calque courant, qui peut être également conservé.)
Cette fonction doit se placer en début de programme.
BiN_Reset doit être lancé en fin de programme,
pour pouvoir réinstaller les modes aux valeurs précédentes.
Exemples

(BiN_Init '("orthomode" "clayer"))
   ; 1ère ligne du programme : dans ce cas les modes "orthomode" et
   ; "Cmdecho" ainsi que le calque courant sont conservés)
	(... ...)
	(... ...)
	(BiN_Reset)         ; dernière ligne du programme
        A la sortie, le calque courant et les modes conservés sont
        redéfinis tels qu'ils étaient à l'entrée du programme.

Autre exemple :	

(BiN_Init '())    ; si aucun mode à conserver autre que Cmdecho
(... ...)
(BiN_Reset)       ; dernière ligne du programme

La fonction


 1- (defun BiN_Init (*Lvar / OldCmd)

 2-    (setq *Lvar (append *Lvar '("cmdecho"))) 	
 3-    (setq $MLST '())	 
 4-    (repeat (length *Lvar)	
 5-       (setq $MLST (append $MLST 		
 6-                           (list (list (car *Lvar) (getvar (car *Lvar))))))
 7-       (setq *Lvar (cdr *Lvar))	
 8-    )	
 9-    (setq OldCmd (getvar "cmdecho")) 
10-    (setvar "cmdecho" 0)	
11-    (setq $OldError *error*	
12-          *error* BiE_Error)	
13-    (command "_UNDO" "_M")	
14-    (setvar "cmdecho" oldcmd)	
15- )
Ligne 2 :   Cmdecho est ajouté dans la liste des variables *Lvar
Ligne 3 :   La variable globale $MLST est vidée.
Ligne 4 :   Boucle repète autant de fois qu'il y a de modes dans *Lvar
Lignes 5-6:   Ajoute à $MLST une liste comprenant le 1er mode de la liste *Lvar 
                   et sa valeur Getvar
Ligne 7 :     Supprime le 1er mode de la liste.
Ligne 8 :   Fin de boucle repeat
Ligne 9 :   La valeur de Cmdecho est conservée dans OldCmd
Ligne 10 :  On supprime l'affichage  des messages de Commandes
Ligne 11 :  Conserve l'éventuelle routine de gestion des erreurs en cours.
Ligne 12 :  Gestion des erreurs adaptée à BiRaRR. - Voir routine BiE_Error
Ligne 13 :  Marque le début pour la commande Annuler. 
               Voir manuel AutoCAD pour plus de précisions.
Ligne 15 :  Sa valeur initiale est redonnée à Cmdecho.

Sauvegarde des modes courants : Dans le programme, on place la liste des modes à conserver, sous forme d'une liste de chaînes comme argument à BiN_Init. Le programme stocke ses modes et leurs valeurs correspondantes dans la variable globale $MLST qui sera lue par la routine BiN_Reset en fin de programme.

Append : Prend un nombre indéfini de listes et les traite ensemble comme une seule liste.
Repeat : Ici, évalue les lignes 5 à 7 pour tous les éléments de la liste *Lvar.
Length : Renvoie un nombre entier indiquant le nombre d'éléments contenus dans une liste.
List : Regroupe plusieurs éléments en une liste.
Car : Renvoie le premier élément d'une liste.
Cdr : Renvoie une liste contenant tous les éléments de cette liste sauf le premier.