Comment charger un fichier AutoLISP ?

Synthèse d’une discussion du forum CADxp : Charger et utiliser une routine AutoLISP

Introduction

Ce document présente une synthèse chronologique d’une discussion technique issue du forum CADxp, une communauté de référence pour les utilisateurs francophones de logiciels de Conception Assistée par Ordinateur (CAO). Le thème central de cet échange est le chargement et l’utilisation des routines AutoLISP dans AutoCAD®, une compétence fondamentale pour tout utilisateur souhaitant automatiser des tâches ou personnaliser son environnement de travail. Initiée en 2007 par un guide détaillé, la discussion s’est enrichie au fil des ans grâce aux contributions et aux questions pratiques des membres de la communauté, démontrant la pérennité de cette ressource collaborative.

La discussion complète est archivée et accessible via le lien suivant : Charger un LISP - Débuter en LISP - CadXP


1. Le Guide Fondamental : La publication initiale de (gile) (6 Avril 2007)

La discussion a été initiée par le modérateur (gile) afin de créer une ressource de référence et de centraliser les réponses à cette question récurrente. Son objectif était de fournir une base solide et claire sur les différentes facettes du chargement des routines LISP, à destination des utilisateurs novices comme des programmeurs débutants.

1.1. Analyse des méthodes de chargement d’une routine LISP

Le guide de (gile) détaille plusieurs méthodes pour charger un fichier LISP, chacune adaptée à un besoin spécifique.

  • Copier-coller direct : Cette méthode consiste à copier l’intégralité du code LISP et à le coller directement dans la ligne de commande d’AutoCAD®. Elle est particulièrement adaptée aux tests rapides ou à l’exécution d’expressions simples qui ne nécessitent pas d’être sauvegardées.
  • Enregistrement en fichier .lsp : Il s’agit de la procédure standard. Le code est copié dans un éditeur de texte brut (tel que le Bloc-notes) pour garantir l’absence de caractères de mise en forme, puis enregistré avec une extension .lsp. Pour une utilisation récurrente, il est recommandé de placer ce fichier dans un dossier déclaré dans le chemin de recherche des fichiers de support d’AutoCAD®.
  • Chargement manuel dans le dessin courant : Une fois le fichier .lsp enregistré, il peut être chargé manuellement dans la session de dessin active de trois manières :
    1. Via la commande APPLOAD.
    2. Par un simple glisser-déposer du fichier depuis l’explorateur Windows vers la fenêtre d’AutoCAD®.
    3. En utilisant la fonction LISP (load ...) dans la ligne de commande. La syntaxe varie selon l’emplacement du fichier :
    • Si le fichier est dans un chemin de recherche : (load "monfichier.lsp")
    • Si le fichier n’est pas dans un chemin de recherche : le chemin complet doit être spécifié, en utilisant des barres obliques (/) ou des barres obliques inverses doublées (\\), par exemple (load "C:/MesLisp/monfichier.lsp").

1.2. Stratégies de chargement automatique

Pour éviter de devoir charger manuellement les routines à chaque session, (gile) présente des solutions d’automatisation.

  • Suite de démarrage APPLOAD : La commande APPLOAD permet d’ajouter des fichiers LISP à une liste de chargement automatique via l’icône « Valise » de la section « Au démarrage ». Tous les fichiers de cette liste seront chargés à chaque lancement d’AutoCAD®.
  • Fichiers de démarrage spécialisés : AutoCAD® utilise des fichiers LISP spécifiques qui se chargent automatiquement. Le guide mentionne ACADDOC.LSP (chargé à l’ouverture de chaque dessin) et AutoCAD.LSP (ou acad.lsp), chargé une seule fois au démarrage d’une session. Une note importante précise de ne jamais modifier les fichiers système comme ACAD200*.LSP ou ACAD200*DOC.LSP.

1.3. Exécution de la commande et gestion des fichiers dépendants

Après le chargement, l’utilisation de la routine implique de connaître son mode d’exécution et de gérer ses dépendances éventuelles.

  • Lancement d’une commande : Une routine LISP est définie comme une commande AutoCAD® via la syntaxe (defun c:macommande ...). Pour l’exécuter, l’utilisateur n’a qu’à taper macommande dans la ligne de commande.
  • Gestion des boîtes de dialogue ( .DCL ) : Si une routine utilise une interface graphique, elle dépend souvent d’un fichier .DCL. Ce fichier doit être placé dans un dossier du chemin de recherche des fichiers de support pour qu’AutoCAD® puisse le localiser.
  • Utilisation des fichiers compilés ( .VLX ) : Les fichiers .VLX sont des routines LISP compilées et cryptées. Leur principal avantage est qu’ils peuvent regrouper plusieurs fichiers LISP et DCL en un seul paquet, simplifiant leur distribution.
  • Éditeur Visual LISP ( VLIDE ) : Le guide recommande fortement l’utilisation de l’éditeur intégré à AutoCAD® (VLIDE), un environnement puissant pour écrire, modifier, déboguer et charger du code LISP.

1.4. Impératif de sécurité pour les versions récentes d’AutoCAD®

Le guide inclut une instruction critique pour les versions d’AutoCAD® 2014 et ultérieures. Pour des raisons de sécurité, AutoCAD® bloque par défaut l’exécution de code provenant de sources non fiables. Il est donc impératif d’ajouter le dossier contenant les fichiers LISP aux « Emplacements approuvés » dans l’onglet Fichiers des options d’AutoCAD®.

Ce guide exhaustif a servi de point de départ solide, immédiatement complété par les connaissances d’autres membres experts de la communauté.


2. Enrichissements et optimisations par la Communauté (2007)

Dès sa publication, les interventions d’utilisateurs expérimentés ont transformé en temps réel ce qui était un tutoriel statique en une base de connaissances dynamique et collaborative, ajoutant des techniques avancées et des précisions importantes au guide initial.

2.1. Contribution de Patrick_35

L’utilisateur Patrick_35 a apporté deux compléments techniques majeurs :

  1. Optimisation avec autoload : Il a introduit la fonction autoload, une méthode de chargement optimisée. autoload permet de déclarer une commande sans charger immédiatement le code correspondant en mémoire. La routine n’est chargée que lors de son premier appel, ce qui se traduit par un démarrage plus rapide d’AutoCAD®, en particulier lors de la gestion d’une grande bibliothèque de routines LISP.
  2. Clarification sur la variable acadlspasdoc : Il a précisé le rôle de la variable système acadlspasdoc. Si cette variable est définie à 1, elle force le fichier AutoCAD.lsp (normalement chargé une seule fois par session) à se charger à chaque ouverture de dessin, lui donnant un comportement identique à celui du fichier acaddoc.lsp.

2.2. Suggestion de stephan35

Un autre membre, stephan35, a suggéré d’aborder également la fonction S::startup. Cette suggestion a suscité une réponse de (gile) qui éclaire sa démarche pédagogique : « Je ne voulais pas faire un trop long premier message, sur lequel renvoyer les non lispeurs qui veulent seulement utiliser des routines sans trop les embrouiller. » Cet échange illustre la synergie d’une communauté : concilier la nécessité d’un guide accessible pour les débutants avec l’ajout de techniques d’optimisation pour les experts.

Ces ajouts ont rapidement transformé le tutoriel initial en une ressource collective encore plus complète, s’adressant non seulement aux débutants mais aussi aux utilisateurs cherchant à optimiser leur environnement de travail.


3. Évolution de la discussion : Questions pratiques et clarifications (2009 - 2017)

La valeur à long terme du fil de discussion a été prouvée par sa capacité à résoudre les problèmes concrets des utilisateurs des années après sa création, entrant ainsi dans sa phase d’application pratique.

3.1. Dépannage d’un utilisateur et résolution (2009)

En 2009, l’utilisateur guillaumr5610 a signalé qu’il ne parvenait pas à utiliser une routine après l’avoir chargée. La solution, apportée par Koalu, était simple : il fallait connaître et taper le nom exact de la commande définie dans le fichier LISP (plwidth2dbl_offset). Cet échange a renforcé un point fondamental du guide initial : pour exécuter une routine, il est crucial de connaître le nom exact de la commande qu’elle définit (par exemple, c:macommande).

3.2. La distinction cruciale : acad.lsp vs acaddoc.lsp (2013)

En 2013, Bortch59 a posé une question sur la différence pratique entre utiliser acad.lsp (avec ACADLSPASDOC à 1) et acaddoc.lsp. La réponse experte de (gile) a clarifié que cette configuration rendait les deux fichiers redondants. Il a insisté sur le fait que cela faisait perdre l’avantage principal de acad.lsp : exécuter du code (comme la définition de variables globales) une seule fois au démarrage de la session. Modifier ce comportement peut entraîner des inefficacités et des effets secondaires non désirés, tels que la redéfinition de fonctions ou la réinitialisation de variables à chaque ouverture de dessin.

3.3. Confirmation sur la sécurité (2017)

En 2017, l’intervention de Aleck_Ultimate a souligné la pertinence continue du guide. Confronté aux messages d’avertissement de sécurité (« emplacements non approuvés ») des versions récentes d’AutoCAD®, il a confirmé que la solution se trouvait bien dans la publication originale de (gile). Il a également ajouté un commentaire pertinent : la solution est « un peut difficile à trouver par une recherche internet ». Ce retour d’expérience met en évidence la valeur des fils de discussion communautaires centralisés, qui capitalisent des solutions spécifiques parfois difficiles à localiser via des moteurs de recherche génériques.

Ces interactions, étalées sur une décennie, ont servi de validation à long terme pour le guide, prouvant sa pertinence et son exactitude constantes à travers plusieurs versions d’AutoCAD®.


Conclusion

La discussion sur le forum CADxp autour du chargement des routines AutoLISP illustre parfaitement comment une initiative individuelle peut se transformer en une ressource communautaire vivante et durable. Parti d’un guide initial bien structuré pour répondre à un besoin fréquent, le sujet a été enrichi par l’expertise collective de ses membres, qui ont ajouté des optimisations, répondu à des questions pratiques et confirmé sa pertinence au fil des évolutions du logiciel. Cet échange témoigne de la valeur d’une communauté active, capable de construire et de maintenir une base de connaissances fiable et accessible pendant plus d’une décennie.

Il est rappelé aux lecteurs qu’ils peuvent se référer à la discussion originale complète sur CADxp via le lien fourni en début de cette synthèse.