Aller au contenu

Ouvrir unelisp sans le charger au départ


pierrevigneux

Messages recommandés

Salut,

 

Je ne comprends pas bien la question.

 

Pour pouvoir utiliser une commande définie en LISP dans un dessin, le fichier LISP dans lequel est défini cette commande doit être chargé.

 

En ce qui concerne le chargement automatique des fichiers LISP, on peut avoir un contrôle plus fin de ces chargements en utilisant les fichiers de chargement automatique des routines LISP qu'avec la "valise" de la commande APPLOAD.

Voir ici et l'aide : Guide de personnalisation >> Introduction aux interfaces de programmation >> AutoLISP et VisualLISP >> Chargement et exécution automatiques des routines AutoLISP.

 

Donc dans un ficher acaddoc.lsp (à créer) ou un fichier MNL du même nom qu'un fichier CUI(X) (on peut utiliser AutoCAD.mnl) on peut écrire des expressions LISP qui utilisent les fonctions load ou autoload :

 

load charge immédiatement le fichier LISP qui lui est passé comme premier argument : le nom du fichier (ou son chemin complet s'il n'est pas dans les chemins de recherche) et accepte un second argument (optionnel) : une expression LISP qui sera exécutée si le chargement échoue (en général une chaîne de caractères qui indique que le chargement a échoué.

Exemple :

(load "toto.lsp" "toto non chargé")

 

autoload ne charge le fichier LISP qu'au premier appel d'une des commandes définies dans ce fichier. autoload requiert 2 arguments : le nom du fichier et la liste des commandes.

Exemple où Cmd1 et Cmd2 sont les noms des commandes définies dans toto.lsp :

(autoload "toto.lsp" '("Cmd1" "Cmd2"))

 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Non, c'est dans un fichier de chargement automatique des routines LISP (acaddoc.lsp ou AutoCAD.mnl) qu'il faut mettre les expressions (autoload ...).

 

Dans ton menu, tu met simplement une macro qui appelle la commande :

^C^Cvol;

 

Ou, si tu ne veux pas utiliser les fichiers de chargement automatique, tu peux charger le LISP au moment de lancer la commande :

^C^C(load "vol.lsp");(c:vol); 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Je crains qu'il n'y ait quelque confusion et il manque des guillemets fermants dans l'expression LISP.

 

Soit un fichier LISP nommé toto.lsp, dans le quel la commandes faisle est définie par la fonction : c:faisle (rappel : un nom de fonction LISP préfixé avec c: permet d'appeler cette fonction, par son nom sans le préfixe, directement depuis AutoCAD comme une commandes native).

 

(defun c:faisle () (alert "Salut le monde !") (princ))

 

Dans ce cas la macro doit être :

^C^C(if (not c:faisle) (load "toto"));faisle;

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité