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))