BiL_Subst

Fonction Catégorie Version
BIL 19 BiL_Subst Gestion des Listes 1.0 - Janvier 2007

Description

But Substitue un élément d'une liste, d’après son numéro d'ordre.
Prototype (BiL_Subst Liste PosItem NewItem)
Argument Liste - La liste à traiter - Liste -
PosItem - Position de l’élément à substituer - Entier -
NewItem - Valeur du nouvel élément - tout type -
Retours La liste modifiée
Var. globales Néant
Description Retourne une liste après y avoir substitué un élément repéré par sa position dans la liste.
Notes Le comptage se fait normalement : 1er élément = numéro 1, etc...
Fonction complémentaire de Subst d’AutoLisp qui ne fonctionne que par occurrences.
Exemples

Commande: (BiL_Subst '(1 2 3 4 5 6 7 8 9) 5 "c")
	retourne   (1 2 3 4 "c" 6 7 8 9)
	
(BiL_Subst '("a" "b" "c" "d" "e" "f" "g") 3 "X")
	retourne   ("a" "b" "X" "d" "e" "f" "g")
	
Commande: (BiL_Subst (list "aa" "bb" "cc") 0 "Z")
	retourne   ("aa" "bb" "cc")
	L’élément n° 0 n’existe pas.

Commande: (BiL_Subst (list "aa" "bb" "cc") 5 "X")
	retourne   ("aa" "bb" "cc") 
	L’élément n° 5 n’existe pas.

Commande: (Bil_Subst List3 2 "X")  retourne   nil
	List3 n’est pas une liste.

La fonction


  1-  (defun BiL_Subst(*List1 *PosElm *NewElm / LstRet Cpt1)

  2-     (setq Cpt1 0)
  3-     (repeat (length *List1)
  4-       (if (= Cpt1 (1- *PosElm))
  5-         (progn
  6-	     (if (= Cpt1 0)
  7-	       (setq LstRet (list *NewElm))
  8-	       (setq LstRet (append LstRet (list *NewElm)))
  9-	     ) 			;  fin de if   ligne 6
 10-	    )      			;  fin progn  ligne 5
 11-         (progn   
 12-	     (if (= Cpt1 0)
 13- 		  (setq LstRet (list (nth Cpt1 *List1)))
 14-           (setq LstRet (append LstRet (list (nth Cpt1 *List1))))
 15-	     )  			;  fin de if    ligne 12
 16-         )       			;  fin progn  ligne 11
 17-       )      			;  fin de if   ligne 4
 18-       (setq Cpt1 (1+ Cpt1))
 19-     ) 				;  fin de repeat   ligne 3
 20-     LstRet
 21- )
Ligne 2 :  Initialise le compteur d’éléments – Le 1er élément est le numéro 0
Ligne 3 :  Répète autant de fois qu’il y a d’éléments dans la liste 
Ligne 4 :    Si le compteur numéro d’élément correspond à l’argument Position_d’élément,	
Ligne 6 :      Si c’est le premier élément de la liste,
Ligne 7 :         La liste de retour LstRet est égale à l’argument *NewElm
Ligne 8 :         Sinon ajoute le nouvel élément à la liste de retour LstRet
Ligne 11 :     Si le compteur numéro d’élément ne correspond pas à Position_d’élément,
Ligne 12 :       Si c’est le premier élément de la liste,
Ligne 13 :          La liste de retour LstRet est égale au 1er élément *List1
Ligne 14 :          Sinon ajoute l’élément numéro Cpt1 à la liste de retour LstRet
Ligne 18 :     Incrémente le compteur numéro d ”élément		
Ligne 20 :  Retourne la liste LstRet.(ou nil si l’argument *List1 n’est pas une liste).

Repeat : Ici, évalue les lignes 14 à 18 autant de fois qu’il y a d’éléments dans *List1.
Length : Renvoie un nombre entier indiquant le nombre d'éléments contenus dans une liste.
List : Prend un nombre quelconque d'expressions et les regroupe dans une liste.
Append : Prend un nombre indéfini de listes et les traite ensemble comme une seule liste.
Nth : Renvoie le nième élément d'une liste. - Le 1er élément est le numéro zéro.