BiB_Attr_Nb

Fonction Catégorie Version
BIB 02 BiB_Attr_Nb Gestion des Objets 1.0 - Janvier 2007

Description

But Retourne le nombre d'attributs d'un bloc.
Prototype ( BiB_Attr_Nb Nom_Bloc)
Argument Nom_Bloc- Le nom sous lequel le bloc est inséré - chaîne -
Retours Un nombre entier ou nil.
Var. globales Néant
Description Retourne le nombre d'attributs d'un bloc existant dans le dessin en cours.
Notes - Si le bloc existe et ne contient pas d’attribut, la fonction retourne 0.
- Si le bloc n’existe pas, la fonction retourne nil.
Exemples

Commande: liste
Choix des objets: 1 trouvé(s)
Choix des objets:

REFERENCE DU BLOC  Calque: 0
     Espace: Espace objet
Maintien = 4E6
CARTOUCHE
au point, X=   6.2488  Y=   6.3658  Z=   0.0000
X facteur d'échelle    1.0000
Y facteur d'échelle    1.0000
rotation angle      0
Z facteur d'échelle    1.0000

ATTRIBUT  Calque: TITLE
     Espace: Espace objet
Couleur: 2 (jaune)    Type de ligne: DUCALQUE
Maintien = 4E7
…  …
drapeaux normal(e)
génération normal(e)

ATTRIBUT  Calque: TITLE
     Espace: Espace objet
Couleur: 2 (jaune)    Type de ligne: DUCALQUE
Maintien = 4E8
...

Commande: (BiB_Attr_Nb "Cartouche")  retourne   13

Commande: (BiB_Attr_Nb "Cadre")  retourne    0
	Le bloc existe mais ne contient pas d’attribut.
	
Commande: (BiB_Attr_Nb "Cart3")  retourne    nil
	Le bloc Cart3 n’existe pas dans le dessin.

La fonction


   1- (defun BiB_Attr_Nb (*Bloc / Blk_Data Cpt1)

   2-     (if (setq Blk_Data (tblsearch "BLOCK" *Bloc))	
   3-        (progn
   4-            (setq Blk_Data (cdr (assoc -2 Blk_Data))
   5-                  Cpt1 0
   6-            )
   7-            (while Blk_Data
   8-	            (if (= (cdr (assoc 0 (entget Blk_Data))) "ATTDEF")
   9-	                (setq Cpt1 (1+ Cpt1))
  10-	            )
  11-	            (setq Blk_Data (entnext Blk_Data))
  12-            )                                     ;  fin de while
  13-         )                                        ;  fin de progn
  14-     )                                            ;  fin de if
  15-     Cpt1	
  16- )
Ligne 2 :	Si le bloc entré en argument existe dans la table des blocs,
Ligne 4 :       - Sauvegarde en Blk_Data le nom d’entité du bloc
Ligne 5 :             et initialise le  compteur d’attributs Cpt1
Ligne 7 :       - Puis, tant que Blk_Data n’est pas nul,
Ligne 8 :         Si la sous-entité du bloc est un attribut (nom associé à 0 = ATTEDEF)
Ligne 9 :             Alors, incrémente le compteur d’attributs de 1.
Ligne 11 :       Passe à la sous-entité suivante.
Ligne 12 :     Remonte ligne 7 tant qu’il y a des sous-entités dans le bloc. 
Ligne 15 :  Retourne la valeur du compteur Cpt1 qui sera nil s’il n’y a pas de bloc 
               dans la table des blocs.
 
	

Tblsearch : Recherche un nom de symbole dans une table de symbole et retourne ses données.
Cdr : Renvoie une liste contenant tous les éléments de cette liste sauf le premier.
While : Ici, tant que Blk_Data n’est pas nul, évalue les lignes 8 à 11 et répète le processus.
Assoc : Recherche un élément dans la liste d’association et renvoie la liste correspondante
Entget : Récupère les données de définition d’une entité
Entnext : Renvoie le nom de l’entité suivante (ici sous-entité du bloc)