BiN_Eval

Fonction Catégorie Version
BIN 03 BiN_Eval Gestion de Fonction 1.0 - Janvier 2007

Description

But Evalue tout type de symbole.
Prototype (BiN_Eval Expr)
Argument Expr - L'expression à évaluer - Symbole -
Retours Valeur du symbole
Var. globales Néant
Description Retourne le résultat de l’évaluation d’un symbole.
Contrairement à Eval, BiN_Eval fonctionne également avec des listes
Notes Particulièrement utile pour l’extraction de listes associatives dont on ignore le nombre d’éléments dans la liste.
Exemples

Commande: (setq Symb2 '(11 22)) 	
	retourne   (11 22)

Commande: (eval Symb2)	 
	retourne  	erreur: mauvaise fonction
Commande: (BiN_Eval Symb2)	 	
	retourne   (11 22)

Autre exemple :
	
Commande: !v1    retourne  
    ((-1 . ) (0 . "INSERT") 	
    (5 . "14B") (100 . "AcDbEntity") (67 . 0) (8 . "MUREXT") 
    (100 . "AcDbBlockReference") (2 . "B1") 	(10 231.85 170.802
    0.0) (41 . 2) (42 . 3) (43 .1.0) 	(50 . 0.0) (70 . 0) 
    (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0))

Commande: (eval (cdr (assoc 41 v1)))   retourne   2

Commande: (eval (cdr (assoc 10 v1)))	
	retourne	erreur: mauvaise fonction
	
Commande: (BiN_Eval(cdr (assoc 10 v1)))	 
	retourne	(231.85 170.802 0.0)

La fonction


    1-  (defun Eval2 (*Expr)

    2-      (cond
    3-         ((or (eq (type *Expr) 'sym) 	
    4-	       	      (and (listp *Expr) 	
    5-                    (eq (type (car *Expr)) 'sym)
    6-	              )
    7-           ) 
    8-           (eval *Expr)	
    9-         )                   ;   fin 1ère condition
   10-         (T *Expr)	
   11-      )                      ;   fin  condition
   12-  )
Ligne 2 :	Condition
Ligne 3 :		si *Expr est un symbole,
Ligne 4 :		ou si  *Expr est une liste
Ligne 5 :		    et que le 1er élément de la liste soit un symbole,
Ligne 8 :		alors évalue l’expression 
Ligne 10 :	 	dans tous les autres cas, retourne l’expression

Eq : Vérifie si 2 expressions sont identiques. Ici si le type de *Expr est “ sym ”.
Type : retourne le type de l’argument *Expr. Ici, vérifie si c’est un symbole (ou variable).
Listp : Retourne T si *Expr est une liste, nil dans les autres cas.
Car : Renvoie le premier élément d'une liste.
Eval : Renvoie le résultat de l'évaluation de *Expr.