La fonction (tblsearch) AutoLISP est fondamentale pour écrire des programmes "intelligents" qui ne plantent pas

Voici un mini-tutoriel pour comprendre son fonctionnement.

1. Le Concept : Les « Armoires » d’AutoCAD®

Imaginez qu’AutoCAD® range ses définitions dans des armoires étiquetées (les Tables) :

  • L’armoire « LAYER » contient tous les calques.

  • L’armoire « STYLE » contient les styles de texte.

  • L’armoire « BLOCK » contient les définitions de blocs.

  • L’armoire « LTYPE » contient les types de lignes.

La fonction (tblsearch) sert à ouvrir une armoire et vérifier si un dossier existe.

2. La Syntaxe

(tblsearch "NOM_DE_L_ARMOIRE" "NOM_DU_DOSSIER")
  • Argument 1 : Le type de table (toujours entre guillemets : « LAYER », « BLOCK », etc.).

  • Argument 2 : Le nom de l’objet que vous cherchez (ex: « Mur », « Standard »).

3. Le Résultat (Ce que la fonction renvoie)

C’est là que tout se joue. (tblsearch) a deux réponses possibles :

  1. Si l’objet N’EXISTE PAS : Elle renvoie nil (rien/vide).

  2. Si l’objet EXISTE : Elle renvoie une liste de données (la carte d’identité de l’objet).

4. L’Exemple Concret : Créer un calque (sans erreur)

Supposons que vous vouliez créer un calque nommé « PROJET ».

Si vous lancez bêtement la commande « Nouveau Calque » alors qu’il existe déjà, cela peut réinitialiser ses propriétés ou bloquer le script.

On va donc dire en Lisp : « Cherche dans l’armoire LAYER si le dossier PROJET existe. Si c’est vide (nil), alors crée-le. »

Copiez ce code pour tester :

(defun c:TestCalque ()
  ;; On stocke le résultat de la recherche dans une variable
  (setq resultat (tblsearch "LAYER" "PROJET"))

  ;; On analyse le résultat
  (if resultat
    ;; CAS 1 : Le résultat n'est pas nil (le calque existe)
    (alert "Le calque PROJET existe déjà ! Je ne fais rien.")
    
    ;; CAS 2 : Le résultat est nil (le calque n'existe pas)
    (progn
      (alert "Le calque n'existe pas. Je le crée...")
      (command "_.-LAYER" "_New" "PROJET" "_Color" "1" "PROJET" "")
    )
  )
  (princ)
)

5. Pour aller plus loin (Lire les données)

Puisque (tblsearch) renvoie la « carte d’identité » de l’objet quand il le trouve, vous pouvez vous en servir pour vérifier des propriétés.

Tapez ceci directement dans votre ligne de commande AutoCAD® (avec les parenthèses) :

(tblsearch "LAYER" "0")

AutoCAD® vous répondra quelque chose comme :

((0 . "LAYER") (2 . "0") (70 . 0) (62 . 7) (6 . "Continuous"))

  • (2 . "0") : C’est son nom.

  • (62 . 7) : C’est sa couleur (7 = Blanc/Noir).

  • (70 . 0) : C’est son état (0 = Déverrouillé, etc.).

En résumé : Utilisez toujours (tblsearch) avant de créer un objet (Calque, Style, Bloc) pour vérifier s’il n’est pas déjà présent dans le dessin

Informations complémentaires pour le débutant qui veut aller un peu plus loin:

Il existe exactement 9 tables accessibles via (tblsearch), (tblnext) et (tblobjname).

Voici la liste complète, classée par ordre d’utilité pour un débutant :

Le « Top 5 » (Les indispensables)

  1. « LAYER » : Les Calques.
  • Exemple : (tblsearch "LAYER" "Mur")
  1. « STYLE » : Les Styles de Texte.
  • Exemple : (tblsearch "STYLE" "Arial")
  1. « BLOCK » : Les Définitions de Blocs.
  • Attention : Cela cherche le « moule » du bloc (la définition), pas les blocs dessinés à l’écran.

  • Exemple : (tblsearch "BLOCK" "Chaise")

  1. « LTYPE » : Les Types de Ligne.
  • Exemple : (tblsearch "LTYPE" "AXE")
  1. « DIMSTYLE » : Les Styles de Cote.
  • Exemple : (tblsearch "DIMSTYLE" "ISO-25")

Les 4 autres (Pour les experts)

  1. « UCS » : Les SCU (Systèmes de Coordonnées Utilisateur) enregistrés.

  2. « VIEW » : Les Vues enregistrées (commande VUE).

  3. « APPID » : Les ID d’Applications (utilisé pour stocker des données invisibles, les XData).

  4. « VPORT » : Les configurations de Fenêtres (Viewports).


:warning: Le Piège à éviter (Les Grands Absents)

Attention, beaucoup de débutants se cassent les dents en cherchant des choses qui ne sont pas dans ces tables.

AutoCAD® a évolué et stocke les éléments plus modernes dans des Dictionnaires (accessibles via une autre fonction : dictsearch), et non dans des Tables.

Ce que tblsearch NE PEUT PAS trouver :

  • :cross_mark: « LAYOUT » : Les Présentations (Onglets) ne sont pas une table !

  • :cross_mark: « GROUP » : Les Groupes.

  • :cross_mark: « MATERIAL » : Les Matériaux de rendu.

  • :cross_mark: « MLINE » : Les styles de Multilignes.

En résumé : Si c’est un concept qui existait dans AutoCAD® R12 (années 90), c’est probablement une Table (tblsearch). Si c’est plus récent, c’est un Dictionnaire.

  • Utile
  • Peut mieux faire
  • Inutile
0 votant

:right_arrow: Tous les tutos AutoLISP