N° |
Fonction |
Catégorie |
Version |
BIJ 02 |
BiJ_Merg |
Gestion de Jeu de Sélection |
1.0 - Janvier 2007 |
Description
But
|
Regroupe plusieurs jeux de sélection en un seul.
|
Prototype
|
(BiJ_Merg List_Jeux)
|
Argument
|
List_Jeux) - La liste des jeux de sélection à regrouper - Liste -
|
Retours
|
Un nouveau jeu - Pickset -
|
Var. globales
|
Néant
|
Description
|
Réunit plusieurs jeux de sélection dans un nouveau jeu.
|
Notes
|
Si des entités sont communes à plusieurs jeux, elles ne seront comptées
qu'une seule fois ; chaque entité étant unique dans un jeu de sélection.
Si les jeux sont vides, la fonction retourne un nouveau jeu vide.
|
Exemples
|
(Commande: (BiJ_ss2Ename Sel1)
(<Nom de l'entité: 26e0558> <Nom de l'entité: 26e0550>
<Nom de l'entité: 26e0548> <Nom de l'entité: 26e0540>)
BiJ_ss2Ename retourne la liste des "enames" d'un jeu de sélection.
Commande: (BiJ_ss2Ename Sel2)
(<Nom de l'entité: 26e0570> <Nom de l'entité: 26e0550>
<Nom de l'entité: 26e0568> <Nom de l'entité: 26e0560>)
Commande: (setq SelTot (BiJ_Merg '(Sel1 Sel2)))
<Jeu de sélection: 3>
Commande: (BiJ_ss2Ename SelTot)
(<Nom de l'entité: 26e0570> <Nom de l'entité: 26e0568>
<Nom de l'entité: 26e0560> <Nom de l'entité: 26e0558>
<Nom de l'entité: 26e0550> <Nom de l'entité: 26e0548>
<Nom de l'entité: 26e0540>)
Remarquez que le jeu ne contient que 7 entités :
L'entité 26e0550 étant commune aux 2 jeux.
Autre exemple
Commande: (setq Sel10 (ssadd))
<Jeu de sélection: 5> (ssadd crée un nouveau jeu nul)
Commande: (setq Sel11 (ssadd))
<Jeu de sélection: 6> (ssadd crée un autre jeu nul)
Commande: (setq Sel_T2 (BiJ_Merg '(Sel10 Sel11)))
<Jeu de sélection: 7>
Commande: (sslength Sel_T2) retourne 0
Le nouveau jeu créé est vide (Nombre d'éléments : 0)
|
La fonction
1- (defun BiJ_Merg (*l_Sets / P_Ret Cpt1)
2- (setq P_Ret (ssadd))
3- (foreach P_Set *l_Sets
4- (if P_Set
5- (progn
6- (setq Cpt1 0)
7- (repeat (sslength (BiN_Eval P_Set))
8- (if (entget (ssname (BiN_Eval P_Set) Cpt1))
9- (setq P_Ret (ssadd (ssname (BiN_Eval P_Set) Cpt1) P_Ret))
10- )
11- (setq Cpt1 (1+ Cpt1))
12- )
13- )
14- ) ; Fin if P_Set
15- ) ; Fin Foreach
16- P_Ret
17- )
Ligne 2 : Création d'un nouveau jeu vide P_Ret
Ligne 3 : Pour chaque élément (que l'on va appeler P_Set) de la liste *l_Sets
passée en argument,
Ligne 4 : Si P_Set n'est pas nul,
Ligne 6 : Initialise le compeur à zéro,
Ligne 7 : Répète autant de fois qu'il y a d'entités dans le jeu de sélection P_Set
Ligne 8 : Si l'élément n° Cpt1 du jeu P_Set est une entité,
Ligne 9 : Ajoute son "ename" dans le jeu de sélection P_Ret
Ligne 11 : Incrémente le compteur de 1
Ligne 12 : Remonte ligne 7 pour sélectionner l'entité suivante
Ligne 15 : Remonte ligne 3 tant que tous les jeux de *l_Sets n'ont pas été ajoutés.
Ligne 16 : Retourne le jeu de sélection P_Ret
Foreach : Evalue une série d'expressions pour tous les membres d'une liste.
Repeat : Ici, évalue les lignes 8 à 10 autant de fois qu'il y a d'entités dans le jeu de sélection P_Set.
Ssadd : Ligne 2 : crée un nouveau jeu de sélection - Ligne 9 : Ajoute une entité à un jeu de sélection.
Sslength : Renvoie un entier contenant le nombre d'objets (entités) dans un jeu de sélection.
Ssname : Renvoie le nom d'objet (entité) de l'élément indexé (par Cpt1) dans un jeu de sélection.
Entget : Récupère les données de définition d'une entité.
BiN_Eval : Fonction BiRaRR qui évalue tout type de symbole.