N° | Fonction | Catégorie | Version |
---|---|---|---|
BIB 09 | BiB_GetSel | Gestion des Objets | 1.0 - Janvier 2007 |
But | Retourne des valeurs associées (qui peuvent être multiples) de paires pointées, à partir d'une entité sélectionnée à l'écran, ou de l ‘ename. |
Prototype | (BiB_GetSel Codes Entité) |
Arguments | Codes - Le(s) code(s) associé(s) aux valeurs désirées - tout type - Entité - L'entité à traiter ou son "ename" - 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)
à partir d'une entité sélectionnée à l'écran ou de son 'ename'. Les clefs d'association peuvent être multiples. Contrairement à BiB_Get, BiB_GetSel n'accepte pas les codes sous formes de paires pointées. |
Notes | Voir également la fonction BiB_Get, assez proche. |
Exemples | Commande: ligne Du point: Au point: Au point: Commande: (setq li1 (entlast)) <Nom de l'entité: 2490540> Commande: (BiB_GetSel 0 li1) retourne "LINE" Autres exemples (setq L2 (entsel)) Si on sélectionne un bloc à l’écran : 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_GetSel 10 L2) retourne (325.832 118.09 0.0) (BiB_GetSel 11 L2) retourne nil (BiB_GetSel '(0 2) L2) retourne ("INSERT" "BLOC1") (BiB_GetSel '(0 . 2) L2) retourne error: bad function Command: (BiB_GetSel '(2 10 (40 41 42)50) L2) retourne ("BLOC1" (325.832 118.09 0.0) (nil 0.5 0.5) 0.0) |
1- (defun GetSel (*Key *Ent1 / SubKey) 2- (cond 3- ((atom *Key) 4- (cdr 5- (assoc *Key 6- (entget 7- (cond 8- ((eq (type *Ent1) 'ENAME) *Ent1) 9- ((car *Ent1)) 10- ) ; fin de condition ligne 7 11- ) ; fin de fonction entget ligne 6 12- ) ; fin de fonction assoc ligne 5 13- ) ; fin de fonction cdr ligne 4 14- ) ; fin de condition *Key est un atome ligne 3 15- ( T 16- (mapcar '(lambda (SubKey) (BiB_GetSel SubKey *Ent1)) *Key) 17- ) 18- ) ; fin de condition ligne 2 19- )
Ligne 2 : Condition: Ligne 3 : si *Key ne comporte qu'un seul élément, Ligne 4 : extrait tous les éléments sauf le premier, Ligne 5 : de la liste associée au code *Key - Ligne 6 : dans la liste de données de : Ligne 8 : - *Ent1 si *Ent1 est un 'ename' Ligne 9 : - ou sinon, dans le 1er élément de la liste retournée par Entsel (sélection par piquage) Ligne 15 : dans les autres cas (*Key est une liste) Ligne 16 : Pour chaque élément de *Key, utilise la fonction BiB_GetSel élément_de_*Key *Ent1 Si cet élément est un atome, extrait les éléments associés à cette clé - Voir ligne 2. 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.