BiJ_Merg

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.