N° | Fonction | Catégorie | Version |
---|---|---|---|
BIL 19 | BiL_Subst | Gestion des Listes | 1.0 - Janvier 2007 |
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. |
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).