| N° |
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)