En tant qu’utilisateur AutoLISP, je cherche à comprendre les différences et les avantages de Visual LISP, comment l’utiliser et ses compatibilités avec les versions d’AutoCAD et les systèmes d’exploitation.
Visual LISP est une extension majeure d’AutoLISP, intégrée à AutoCAD depuis la version 2000, qui introduit la Programmation Orientée Objet (POO) via la technologie ActiveX/COM, transformant AutoCAD en un serveur d’automatisation puissant.
-
Comprendre la différence fondamentale (DXF vs Objets) :
- AutoLISP Classique : Manipule directement la base de données via les codes DXF. C’est comme une « chirurgie » où vous modifiez des listes de données brutes. Pour changer la couleur d’une ligne, vous devez extraire la liste DXF, trouver le code 62, le remplacer et réintégrer la liste.
- Visual LISP (ActiveX/COM) : Interagit avec des Objets AutoCAD (ex: une ligne est un objet avec des propriétés). Vous utilisez des méthodes et propriétés (ex:
(vla-put-color obj 1)) pour modifier l’objet, qui se charge ensuite de mettre à jour la base de données. Cette approche est plus lisible, robuste et performante, car elle ne nécessite pas de connaître les codes DXF internes.
-
Nouvelles Capacités Clés :
- Accès aux applications externes : Pilotez directement des applications Windows comme Excel, Word ou Outlook via COM, sans passer par des fichiers intermédiaires (CSV, TXT). Vous pouvez manipuler des feuilles de calcul, formater des cellules, insérer des formules, etc.
- Réacteurs (Event Listeners) : Déclenchez du code LISP en réponse à des événements AutoCAD (changement de dessin, modification d’entité, avant/après commande). Cela permet une automatisation plus dynamique et réactive, par exemple, forcer la mise à jour d’un texte lié à la longueur d’une ligne.
- Accès aux objets non-graphiques profonds : Manipulez plus facilement les configurations de traceurs, les préférences de l’application (Options), ou les dictionnaires et Xrecords de manière structurée.
-
Démarrer avec Visual LISP :
- Environnement : Visual LISP n’est pas un logiciel séparé à installer ; il est intégré nativement à AutoCAD à partir de la version 2000.
- Éditeur : Vous pouvez utiliser l’éditeur historique (
VLIDE, accessible via la commandeVLISP) ou, sur les versions récentes (AutoCAD 2021+), l’extension officielle Autodesk pour VS Code. - Activation : Pour utiliser les fonctions VL, vous devez ajouter la ligne
(vl-load-com)au tout début de votre code. Cette fonction charge les bibliothèques d’extensions ActiveX nécessaires, qui ne sont pas chargées par défaut pour optimiser la mémoire.
-
Mélanger AutoLISP et Visual LISP :
- C’est non seulement possible, mais recommandé et constitue la grande force du langage. Les programmes les plus efficaces sont souvent des hybrides.
- Utilisez AutoLISP pour l’interaction utilisateur et les sélections simples (fonctions comme
entseletssgetsont imbattables en efficacité). - Convertissez les entités sélectionnées en objets Visual LISP à l’aide de fonctions comme
vlax-ename->vla-object. - Utilisez Visual LISP pour modifier les propriétés des objets ou effectuer des calculs complexes.
-
Compatibilité et Limitations :
- AutoCAD LT : Les fonctions
vla-etvlax-(ActiveX/COM) ne sont pas supportées sur AutoCAD LT. Bien qu’AutoCAD LT supporte AutoLISP depuis la version 2024, les fonctionnalités ActiveX/COM restent bridées. Un script VLISP utilisant ces fonctions ne fonctionnera donc pas sur LT. - macOS : Les fonctions ActiveX et COM ne fonctionnent pas sur macOS. Visual LISP (la partie Objet) repose sur la technologie COM (Component Object Model), qui est exclusive à Microsoft Windows. Sur Mac, il faut souvent revenir aux méthodes DXF classiques pour la manipulation d’objets.
- Types de données : ActiveX est strict sur les types de données (Entier, Double, Chaîne). Vous devrez parfois convertir vos listes LISP en « tableaux sécurisés » (
Safearrays) ou « Variants » pour que les fonctionsvlax-les acceptent (ex: un point(1.0 2.0 0.0)doit être converti en tableau de doubles).
- AutoCAD LT : Les fonctions
-
Performance :
- L’exécution d’un programme Visual LISP est généralement plus rapide que l’AutoLISP classique, surtout pour la modification ou la lecture de propriétés sur de nombreux objets. VL communique directement avec l’objet en mémoire, tandis que l’AutoLISP DXF oblige AutoCAD à reconstruire des listes, chercher des codes, substituer et régénérer l’entité, ce qui est plus lent sur de grands ensembles.