| N° | Fonction | Catégorie | Version |
|---|---|---|---|
| BIB 13 | BiB_PutLst | Gestion des Objets | 1.0 - Janvier 2007 |
| But | Permet de modifier les valeurs associées de plusieurs paires pointées |
| Prototype | (BiB_PutLst ‘Liste_PP Liste_Données) |
| Arguments | Liste_PP - Liste des paires pointées modifiées - liste - Liste_Données - La liste de description à traiter - liste - |
| Retours | La liste des données modifiées |
| Var. globales | Néant |
| Description | Permet de modifier les valeurs associées de plusieurs paires pointées dans la liste de définitions d'une entité à partir de cette liste |
| Notes | Il faut une double liste (( )) s’il n’y a qu’une paire à modifier. (Pour modifier une seule paire, voir BiB_Put.) Si une paire pointée n’existe pas, elle est ajoutée à la liste de définitions. Voir BiB_PutSym s'il y a des symboles dans les paires pointées. Entmod est nécessaire ensuite pour la modification effective. . |
| Exemples | Commande: (setq a4 (entget a3)) ((-1 . <Nom de l'entité: 2590e98>)(0 . "INSERT") (5 . "153")(100 . "AcDbEntity") (67 . 0) (8 . "MUREXT") (100 . "AcDbBlockReferen") (2 . "INSTRU05") (10 279.634 74.844 0.0) (41 . 2.0) (42 . 3.0) (43 . 1.0) (50 . 1.91866) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) ... Commande: (BiB_PutLst '((41 . 3)(42 . 4)) a4) ((-1 . <Nom de l'entité: 2590e98>) (0 . "INSERT") (5 . "153") (100 . "AcDbEntity") (67 . 0) (8 . "MUREXT") (100 . "AcDbBlockReferen") (2 . "INSTRU05") (10 279.634 74.844 0.0) (41 . 3) (42 . 4) (43 . 1.0) (50 . 1.91866) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) ... Les paires pointées de code 41 et 42 sont modifiées. Commande: (BiB_PutLst '((41 . 1)(42 . 1)(101 . 1)) a4) ((101 . 1) (-1 . <Nom de l'entité: 2590e98>) (0 . "INSERT") (5 . "153") (100 . "AcDbEntity") (67 . 0) (8 . "MUREXT") (100 . "AcDbBlockReference") (2 . "INSTRU05") (10 279.634 74.844 0.0) (41 . 1) (42 . 1) (43 . 1.0) (50 . 1.91866) (70 . 0) (71 . 0) ... Les paires pointées de code 41 et 42 sont modifiées à nouveau, et la paire pointée code 101 qui n'existait pas est rajoutée en début de liste. |
1- (defun BiB_PutLst (*ListPP *EntDat / OldPP) 2- (cond 3- ((not *ListPP) *EntDat) ; si ListPP est nul, prendre *EntDat 4- (t (BiB_PutLst (cdr *ListPP) ; sinon relancer récursivement BiB_PutLst 5- (cond ; en enlevant la 1ère liste de *ListPP 6- ((setq OldPP (assoc (caar *ListPP) *EntDat)) 7- (subst (car *ListPP) OldPP *EntDat) 8- ) 9- (t (cons (car *ListPP) *EntDat)) 10- ) ; fin de condition ligne 5 11- ) ; fin de fonction BiB_PutLst ligne 4 12- ) ; fin de condition T ligne 4 13- ) ; fin de condition ligne 2 14- )
Explication du programme :
Exemple : Commande: (setq a4 (entget a3))
((-1 . <Nom de l'entité: 2590e98>) (0 . "INSERT") (5 . "153") (100 . "AcDbEntity")
(67 . 0) (8 . "MUREXT") (100 . "AcDbBlockReference") (2 . "INSTRU05")
(10 279.634 74.844 0.0) (41 . 2.0) (42 . 3.0) (43 . 1.0) (50 . 1.91866) (70 . 0)
(71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0))
Commande: (BiB_PutLst '((41 . 3)(42 . 4)) a4) >> *ListPP = '((41 . 3)(42 . 4))
1er tour - ligne 4 BiB_PutLst '(42 . 4) ...
- ligne 6 OldPP = (assoc 41) = (41 . 2.0)
- ligne 7 remplace OldPP par (car de *ListPP)
soit (41 . 2.0) par (41 . 3) dans *EntDat
- ligne 9 passe
2ème tour - ligne 4 BiB_PutLst nil ...
- ligne 6 OldPP = (assoc 42) = (42 . 3.0)
- ligne 7 remplace OldPP par (car de *ListPP)
soit (42 . 3.0) par (42 . 4) dans *EntDat
- ligne 9 passe
3ème tour - ligne 3 Retourne *EntDat
((-1 . <Nom de l'entité: 2590e98>) (0 . "INSERT") (5 . "153")
(100 . "AcDbEntity") (67 . 0) (8 . "MUREXT") (100 . "AcDbBlockReference")
(2 . "INSTRU05") (10 279.634 74.844 0.0) (41 . 3) (42 . 4) (43 . 1.0)
(50 . 1.91866) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0))