(setq), la fonction la plus fondamentale de l'AutoLISP

Voici le tutoriel sur la fonction la plus utilisée, la plus indispensable, la « respiration » du Lisp : (setq).

Si (defun) est le cerveau qui crée les ordres, (setq) est la mémoire. Sans elle, votre programme est comme un poisson rouge : il oublie tout instantanément.

1. Le Concept : « La Boîte à Chaussures »

Imaginez que la mémoire d’AutoCAD® est une immense étagère vide.

(setq) sert à prendre une boîte à chaussures, écrire un nom dessus au marqueur, mettre quelque chose dedans, et la poser sur l’étagère.

  • Le Nom sur la boîte : C’est la Variable (ex: MaLargeur).

  • Ce qu’il y a dedans : C’est la Valeur (ex: 50, "Bonjour", ou un point (0 0 0)).

À tout moment plus tard, vous pourrez dire : « AutoCAD®, donne-moi le contenu de la boîte MaLargeur », et il vous répondra « 50 ».

2. La Syntaxe (Simplissime)

Le nom vient de l’anglais « SET Quote » (Fixer une valeur), mais retenez juste SET (Fixer/Définir).

(setq NOM_DE_LA_BOITE  CE_QU_ON_MET_DEDANS)
  • Exemple 1 (Un nombre) : (setq Rayon 10.5)

  • Traduction : « Crée une variable ‹ Rayon › et mets 10.5 dedans. »

  • Exemple 2 (Du texte) : (setq MonNom "Patrick")

  • Traduction : « Crée une variable ‹ MonNom › et mets ‹ Patrick › dedans. »

3. L’Exemple : La Petite Calculette

On va créer une commande qui utilise (setq) pour stocker deux nombres, les multiplier, et stocker le résultat.

Copiez ce code et lancez TEST-MEMOIRE.

(defun c:TEST-MEMOIRE ( / largeur hauteur surface )
  
  (prompt "\n--- DÉBUT DU TEST ---")

  ;; 1. On remplit les boîtes (Assignation)
  (setq largeur 5.0)
  (prompt "\nJ'ai mis 5.0 dans la boîte 'largeur'.")

  (setq hauteur 10.0)
  (prompt "\nJ'ai mis 10.0 dans la boîte 'hauteur'.")

  ;; 2. On utilise le contenu des boîtes pour faire un calcul
  ;; On crée une nouvelle boîte 'surface' pour le résultat
  (setq surface (* largeur hauteur))
  
  ;; 3. On affiche le résultat
  ;; (rtos transforme le nombre en texte pour l'affichage)
  (alert (strcat "Le calcul de " (rtos largeur) " x " (rtos hauteur) " donne : " (rtos surface)))
  
  (princ)
)

4. L’Astuce de Pro (Le « Combo »)

Vous n’êtes pas obligé d’écrire (setq) à chaque ligne. Vous pouvez remplir plusieurs boîtes d’un coup !

(setq a 10
      b 20
      c 30)

AutoCAD® comprend : a=10, b=20, c=30.

Résumé pour briller

  • (setq) = Stocker Et Tenir (moyen mnémotechnique).

  • C’est le seul moyen de conserver une information pour l’utiliser trois lignes plus bas.

  • Si vous ne mettez pas une info dans un (setq), elle est perdue à jamais !

  • Utile
  • Peut mieux faire
  • Inutile
0 votant

:right_arrow: Tous les tutos AutoLISP

Bonjour,

Un petit oublie concernant SETQ, c’est la portée.
Locale : accessible uniquement dans le lisp en cours si le variable est déclarée après le defun, comme tu le montre dans ton exemple
Globale, accessible par un autre programme ou en tapant !MaVariable dans la barre de commande, si elle n’est pas déclarée.
Cordialement

1 « J'aime »

Merci pour la précision @Fraiddd !