(tblobjname) pour tout savoir en AutoLISP sur un élément d'une table

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 :

  • tblsearch renvoie une liste propre ((0 . "LAYER") (2 . "0")...).

  • tblobjname renvoie 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
0 votant

:right_arrow: Tous les tutos AutoLISP