LOAD et AUTOLOAD

LOAD

Charger un fichier Lisp


C'est très bien d'écrire des programmes* ou des routines*, encore faut-il les charger ! non ?
c'est ici que ça se passe ...

Syntaxe : ( load NomFichier [siéchec] )

L'argument NomFichier est une chaîne de caractères (string) exprimant le nom du fichier à charger. Il n'est pas nécessaire de préciser l'extension du fichier en cas de fichier LSP car l'extension .lsp est utilisée par défaut.

En cas d'échec, la fonction ( load )  renvoie la valeur de l'argument siéchec.
Toutefois, si cet argument n'est pas spécifié et que la fonction n'aboutit pas un message d'erreur s'affiche en cas d'échec.

En cas de succès, ( load ) renvoie la valeur de la dernière expression du fichier.
L'argument NomFichier peut inclure un préfixe de répertoire,
comme ceci : "/prog/test1", une lettre d'unité est également autorisée.

La barre oblique (/) (slash) ou deux barres obliques inversées (\ \) (double antislash) sont des séparateurs autorisés.

Si vous ne spécifiez aucun préfixe de répertoire dans la chaîne NomFichier, (load) recherche le fichier spécifié sur le chemin d'accès à la bibliothèque AutoCAD.

Si le fichier se trouve dans un de ces chemins (load) procède à son chargement.
Si l'argument siéchec est une fonction AutoLISP correcte, il est évalué.

Ceci permet à une application AutoLISP d'appeler la fonction (load) pour prendre une autre mesure en cas d'échec.

Dans la plupart des cas, l'argument siéchec doit être une chaîne de caractères (string) ou un atome (atom).

Créer un dossier (répertoire) spécifique et inclure ce dernier dans le chemin de recherche des fichiers support est une bonne idée, de cette façon aucun doute sur la possibilité de charger les fichiers LSP et DCL ne viendra perturber le fonctionnement des programmes.


Supposons, par exemple, que le fichier "prog/testl.lsp" existe et contienne :
( defun MA-FONC-1 ( x )
; corps de la fonction ...
)
( defun MA-FONC-2 ( x )
; corps de la fonction ...
)
et que le fichier "test2.lsp" n'existe pas,
alors : ( load "/prog/test1" ) renvoie MA-FONC-2.
( load "/prog/test1" "erroné" ) renvoie MA-FONC2 aussi (ne se sert pas du message siéchec
 alors que ( load "test2" "erroné" ) renvoie "erroné" , le message de siéchec

( load "test2" ) sans argument siéchec affiche un message d'erreur générique d'AutoLisp

La fonction ( load ) peut être utilisée à partir d'une autre fonction AutoLISP, voire de manière récursive (dans le fichier en cours de chargement.


programmes* routines*, pourquoi pas "moulinettes" ?
je vous laisse choisir le mot qui va bien suivant la mégalomanie de l'auteur (hihi)...


AUTOLOAD


La fonction ( autoload ) permet de charger un fichier LISP seulement quand un appel à une
commande définie dans le fichier est effectué.

Syntaxe : ( load NomFichier ListeCommandes )

Si les commandes fonction1 et fonction2 sont définies dans NomFichier ,
la ligne de code : ( autoload "nomfichier" '( "fonction1 " "fonction2 ") )
va déclencher le chargement de nomfichier.lsp au premier appel de fonction1 ou fonction2 .
Autrement dit si les fonctions ne sont pas appelées le programme ne sera pas chargé, ceci contribue à la gestion de la mémoire utilisée, chaque programme chargé en occupant une partie.

 


Haut de page

retour au menu ENVIRONNEMENT


10 janvier 2018,
mise à jour le 8 mai 2020