N° | Fonction | Catégorie | Version |
---|---|---|---|
BIB 06 | BiB_Get | Gestion des Objets | 1.0 - Janvier 2007 |
But | Retourne des valeurs associées (qui peuvent être multiples) de paires pointées. |
Prototype | (BiB_Get Codes Liste_données) |
Arguments | Codes - Le(s) code(s) associé(s) aux valeurs désirées - tout type - Liste_données - La liste à traiter (en général liste Entget) - ename - |
Retours | La ou les valeur(s) associée(s) - tout type - |
Var. globales | Néant |
Description | Retourne des valeurs associées de paires pointées (ou listes associatives)
dans une liste. Les clefs d'association peuvent être multiples avec n'importe quelle structure que la routine conservera au retour. |
Notes | Voir également les fonctions BiB_GetVal, BiB_GetSel,
BiB_Get2Dim, BiB_GetType, BiL_EntGet ... D'après GeT de Vladimir Nesterovsky. |
Exemples | (setq L1 (entget(car (entsel)))) Si on sélectionne un bloc : Choix des objets:((-1 . <Entity name: 17f0788>) (0 . "INSERT")(5 . "71") (100 . "AcDbEntity") (67 . 0) (8 . "0") (100 . "AcDbBlockReference") (2 . "BLOC1") (10 325.832 118.09 0.0) (41 . 0.5) (42 . 0.5) (43 . 0.5) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0)) (BiB_Get 10 L1) retourne (325.832 118.09 0.0) (BiB_Get 11 L1) retourne nil (BiB_Get '(0 2) L1) retourne ("INSERT" "BLOC1") (BiB_Get '(0 . 2) L1) retourne ("INSERT" . "BLOC1") Command: (BiB_Get '(2 10 (40 41 42)50) L1) retourne ("BLOC1" (325.832 118.09 0.0) (nil 0.5 0.5) 0.0) |
1- (defun BiB_Get (*Key *List1 / SubKey SubList) 2- (if (atom (caar *List1)) 3- (cond 4- ((atom *Key) 5- (cdr (assoc *Key *List1)) 6- ) 7- ((and (cdr *Key)(atom (cdr *Key))) 8- (cons (BiB_Get (car *Key) *List1) (cdr (assoc (cdr *Key) *List1))) 9- ) 10- ( T 11- (mapcar '(lambda (SubKey)(BiB_Get SubKey *List1)) *Key) 12- ) 13- ) 14- (mapcar '(lambda (SubList)(BiB_Get *Key SubList)) *List1) 15- ) 16- )
Ligne 2 : Si *List1 est une liste associative Ligne 3 : Conditions : Ligne 4 : si *Key ne comporte qu'un seul élément, Ligne 5 : extrait les autres éléments de la liste associée au code *Key - Ligne 7 : Si *Key est une liste associat. type (0 . 8) qui retournera ("ENTITE" . "PLAN") Ligne 8 : Construit une liste sous forme de paire pointée comprenant : 1 - le ou les éléments associé(s) au 1er élément de *Key dans liste *List1, 2 - le ou les éléments associés au second élément de *Key, dans *List1. Ligne 10 : Dans tous les autres cas ou *List1 est une liste associative Ligne 11 : Pour chaque élément de *Key, utilise fonct. BiB_Get élément_de_*Key *List1 Si cet élément est un atome, extrait les éléments associés à cette clé - Voir ligne 4. Si c'est une paire pointée, voir ligne 8. Dans les autres cas, c'est à dire si c'est une liste, prend chaque élément de cette sous-liste. Si cet élément est un atome... et ainsi de suite, cette fonction est récursive Les résultats sont retournés dans une liste de même structure que *Key. Ligne 13 : fin de condition Ligne 14 : Si *List1 n'est pas une liste associative, traite chaque sous-liste de *List1 sous la forme BiB_Get *Key sous_liste_de_*List1.