AutoCAD LISP : Comprendre les constantes et variables système

J’aimerais avoir une explication détaillée sur les variables définies par AutoLISP, en particulier les constantes globales Visual LISP. Je souhaite comprendre leur utilité, leur mode d’initialisation et si elles sont accessibles ou modifiables par un utilisateur d’AutoCAD.

Les variables définies par AutoLISP, souvent appelées constantes, sont des symboles qui facilitent la programmation en remplaçant des valeurs numériques obscures par des noms explicites, principalement pour interagir avec l’interface ActiveX (COM) d’AutoCAD. Elles ne doivent pas être confondues avec les variables système d’AutoCAD.

Voici une analyse détaillée de leur fonction, initialisation et accessibilité :

  1. À quoi servent ces constantes ?
    Leur rôle principal est de rendre le code LISP plus lisible en utilisant des noms compréhensibles plutôt que des nombres entiers. On peut les classer en trois catégories :

    • Constantes AutoCAD® (Préfixe ac ou vlax-) :
      Elles définissent des propriétés d’objets ou des paramètres spécifiques à l’environnement AutoCAD. Par exemple, au lieu d’utiliser le chiffre 1 pour la couleur rouge, le développeur utilise acRed.
      • Couleurs et Apparence : acRed, acBlue, acByLayer.
      • Types d’objets : acLine (Ligne), acPoint (Point), acRegion (Région).
      • Échelles de fenêtres (Viewport) : La série acViewportScale définit les échelles standard, comme acViewportScale1_50 pour le 1/50ème.
      • Justification de texte : acAlignmentLeft, acAlignmentCenter.
      • Épaisseurs de plume : acLnWt035 correspond à 0.35mm.
    • Constantes Visual Basic / ActiveX (Préfixe vlax- ou vb) :
      Ces variables sont utilisées pour communiquer avec Windows ou d’autres applications via l’interface ActiveX. Elles définissent souvent des types de données ou des options pour les boîtes de dialogue.
      • Types de variables : vlax-vbInteger (Entier), vlax-vbDouble (Nombre réel), vlax-vbString (Chaîne de texte).
      • Boîtes de dialogue (Message Box) : vlax-vbCritical (Icône d’erreur critique), vlax-vbYesNo (Boutons Oui/Non).
    • Constantes LISP Standard :
      Quelques variables font partie du langage AutoLISP de base.
      • pi : La valeur mathématique de Pi (3.14159…).
      • T : Représente la valeur « Vrai » (True) en logique Lisp.
      • pause : Utilisé dans les commandes pour attendre une entrée utilisateur.
  2. À quel moment sont-elles initialisées ?
    La distinction est cruciale pour comprendre leur disponibilité :

    • Au lancement d’AutoCAD® : Les constantes de base comme pi, T et pause sont chargées immédiatement au démarrage du noyau LISP.
    • Au chargement des fonctions étendues (Visual LISP) : La grande majorité des variables commençant par ac et vlax- ne sont pas présentes par défaut au lancement pur d’AutoCAD. Elles sont initialisées lorsque l’environnement Visual LISP est chargé, ce qui se produit généralement lorsqu’un script exécute la fonction (vl-load-com). La plupart des routines LISP modernes (y compris les Express Tools) lancent cette fonction pour activer les fonctionnalités avancées.
  3. Sont-elles accessibles et modifiables par l’utilisateur ?

    • Accessibilité technique : Oui, elles sont totalement accessibles. Si vous tapez !acRed sur la ligne de commande AutoCAD, le système vous retournera sa valeur numérique (par exemple, 1). De même, !acViewportScale1_50 donnera la valeur entière correspondante (probablement un ID interne pour cette échelle).
    • Utilité pour l’utilisateur lambda : Elles ont très peu d’intérêt direct pour un dessinateur classique. Elles ne contrôlent pas le comportement d’AutoCAD comme le feraient les variables système (OSMODE, FILEDIA).
    • Modification : Bien qu’elles soient techniquement modifiables (AutoLISP permet de redéfinir presque tout), il est fortement déconseillé de les toucher. Ce sont des constantes de référence pour les programmes. Changer la valeur de acRed ne modifiera pas la couleur rouge dans AutoCAD ; cela brisera simplement les scripts Lisp qui s’attendent à ce que acRed vaille 1.

En résumé, cette liste de constantes est le « dictionnaire » que Visual LISP charge en mémoire pour traduire des concepts humains (comme « Rouge », « 1/50ème », « Texte Centré ») en valeurs numériques que le processeur d’AutoCAD comprend, facilitant ainsi la programmation et l’interaction avec l’API.