BiB_GetSel

Fonction Catégorie Version
BIB 09 BiB_GetSel Gestion des Objets 1.0 - Janvier 2007

Description

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)

La fonction


 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.



atom : Retourne nil si l'élément est une liste, T dans tous les autres cas
car : 1er élément d'une liste
cdr : retourne une liste après y avoir enlevé le 1er élément
assoc : recherche dans *Ent1 les éléments associés à *Key.
entget : récupère les données de définition d'une entité d'après son nom 'ename'.
type : retourne le type de l'argument *Ent1.
mapcar : retourne une liste correspondant au résultat de la fonction lambda sur chaque élément de *Key
lambda : Pour chacun des éléments de *Key, effectue la fonction (BiB_GetSel cet_élément *Ent1)