Voici le dernier épisode de notre trilogie sur les tables en AutoLISP !
Si (tblsearch) est une photo de l’objet (on peut regarder, mais pas toucher), (tblobjname) est la poignée de main avec l’objet réel.
C’est la fonction qui fait passer du statut de « Spectateur » à celui d’« Acteur ».
1. Le Concept : « La Carte de Visite vs La Personne »
Imaginez que vous cherchez des infos sur le calque « 0 ».
-
(tblsearch) vous donne sa Carte de Visite : « Il s’appelle 0, il est blanc, il est continu. » C’est utile, mais si vous gribouillez sur la carte de visite, ça ne change pas la personne !
-
(tblobjname) vous présente la Personne réelle (l’Entité). Une fois que vous l’avez en face de vous, vous pouvez lui demander de changer de chemise (changer sa couleur).
En résumé : (tblobjname) sert à récupérer l’adresse mémoire de l’objet pour pouvoir le MODIFIER.
2. La Syntaxe (Ultra simple)
C’est exactement la même que pour la recherche :
(tblobjname "ARMOIRE" "NOM_DOSSIER")
- Exemple :
(tblobjname "LAYER" "Mur")
3. L’Exemple : La Preuve par l’Image
On va faire un petit test pour voir la différence entre les deux.
Copiez ce code et regardez bien votre ligne de commande après l’exécution.
(defun c:TEST-TBL (/ info ename)
(prompt "\n--- MATCH : TBLSEARCH vs TBLOBJNAME ---")
;; 1. Le Spectateur (tblsearch)
(setq info (tblsearch "LAYER" "0"))
(princ "\n\n1. Résultat de TBLSEARCH (La description) :")
(princ "\nC'est une liste de données : ")
(princ info)
;; 2. L'Acteur (tblobjname)
(setq ename (tblobjname "LAYER" "0"))
(princ "\n\n2. Résultat de TBLOBJNAME (L'objet réel) :")
(princ "\nC'est un nom d'entité bizarre : ")
(princ ename)
;; 3. La Magie
;; Parce qu'on a l'entité (ename), on peut lire ses données DXF brutes !
(if ename
(progn
(princ "\n\n--> Grâce à tblobjname, je peux accéder aux entrailles de l'objet !")
(princ "\n(entget ename) donne : ")
(princ (entget ename))
)
)
(textscr) ; Ouvre la fenêtre de texte pour bien voir
(princ)
)
4. Ce qu’il faut retenir
Quand vous exécuterez ce code, vous verrez que :
-
tblsearchrenvoie une liste propre((0 . "LAYER") (2 . "0")...). -
tblobjnamerenvoie un truc cryptique du genre<Nom d'entité: 7ffffb05820>.
C’est ce code cryptique qui est le Sésame. C’est lui que vous donnerez plus tard aux fonctions de modification (comme entmod ou les fonctions Visual LISP) pour dire : « Hé, tu vois ce calque précis ? Change-le en rouge ! »
- Utile
- Peut mieux faire
- Inutile
Tous les tutos AutoLISP
