Aller au contenu

[Résolu] Chargement des Lisps à l'ouverture d'un fichier


0.o ?

Messages recommandés

Bonjour à toutes et tous,

 

J'ai, depuis peu, un problème à l'ouverture de chaque fichier AutoCAD.

Le logiciel charge tous les lips à chaque fichier dwg ce qui ralenti considérablement leur ouverture.

Il me semble qu'il n'était pas aussi long avant.

Est-il possible que le logiciel ne charge les lips qu'une seule fois et non à chaque fichier ?

 

D'avance merci, Cordialement

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Non ce n'est pas possible. AutoLISP ne fonctionne que dans le contexte du document.

Ce que tu peux faire, c'est utiliser la fonction autoload depuis un fichier de chargement automatique pour ne charger les LISP qu'au premier appel d'une commande.

  • Upvote 1

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Bonjour et merci pour vos réponses,

 

Je vais voir pour utiliser autoload, si le sujet a déjà était expliqué dans un autre topic je suis preneuse car l'aide AutoCAD ne m'a pas l'air très clair.

 

Pour ce qui est des changements apportés sur le poste, j'ai réinitialisé autocad et rechargés tous les lips. Il est possible que j'en ai rechargé un poil plus B)

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

Re-bonjour à toutes et tous,

 

Deux mois après ma question initiale, je suis toujours embêtée avec le chargement de mes lisps.

 

A ce que j'ai compris :

 

- acad.lsp permet de définir les lisps à lancer au démarrage d'autocad (avec ACADLSPASDOC = 0) ou à chaque ouverture de fichier (avec ACADLSPASDOC = 1 )

 

C'est donc l'équivalent d'autoload non ? Si c'est le cas, quel est l'intérêt de créer un fichier "acad.lsp" ?

 

- acaddoc.lsp permet de définir les lisps à lancer au premier appel de la commande

 

J'ai beau lire l'aide autocad, je ne comprend pas comment créer ces fichiers.

 

Pour "acad.lsp" :

 

- J'ai créé un fichier à l'aide du bloc note appelé "acad.lsp"

- Ce fichier est enregistré dans un dossier dont le lien est connu d'autocad

- Enfin ce fichier contient

 

(load "LongT.lsp")
(load "Stot")

 

Aucune des deux fonctions n'est pourtant chargée au démarrage de l'application.

Est-ce qu'il faut ajouter d'autres commandes à ce fichier pour qu'il fonctionne ?

 

D'avance merci

Cordialement

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir à toutes et tous,

 

Perso sur le "acad.lsp perso", je ne charge que des ".dll", avec ce langage => Exemple pour le programme "GLmapTextToOD.dll"

 

(command "_netload" "GLmapTextToOD.dll ")
;;; LANCER LA COMMANDE _GLmapTextToOD;;;

 

La première ligne permet de charger le programme et la seconde ligne est juste une info pour moi, au cas ou j'oublierai comment lancer le prog,...

 

Et sur mon "acaddoc.lsp perso", je lance les routines lisps de cette façon => Exemple pour le programme "ARMA "

 

(autoload "ARMA" '("ARMA"))

  • Upvote 1

Civil 3D 2024 - COVADIS_18.2

https://www.linkedin...3%ABt-95313341/

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Tu confonds le fichier acaddoc.lsp et la fonction LISP autoload.

 

La fonction load permet de charger un fichier LISP.

La fonction autoload permet de charger un fichier LISP au premier appel d'une commande LISP définie dans ce fichier.

 

Le fichier acaddoc.lsp est chargé à l'ouverture de chaque nouveau dessin.

La fichier toto.mnl est chargé à l'ouverture de chaque nouveau dessin si le fichier toto.cuix est aussi chargé.

 

 

Donc, le plus simple :

Tu enregistres les fichiers LISP dans un répertoire des chemins de recherche (et approuvés si A2014 ou plus).

Tu crées un fichier acaddoc.lsp dans un répertoire des chemins de recherche.

Dans ce fichier tu écris des expressions LISP qui seront évaluées à chaque ouverture d'un nouveau dessin.

 

(prompt "\nChargement de accadoc.lsp.")
(load "LongT.lsp" "Le fichier 'LongT.lsp' n'a pas pu être chargé")
(autoload "MesCommandes.lsp" '("cmd1" "cmd2"))

À l'ouverture de chaque dessin tu devrais voir en ligne de commande : Chargement de accadoc.lsp.

Le LISP 'LongT.lsp' sera chargé ou tu verras le message d'erreur.

La première fois que tu lancera CMD1 ou CMD2, tu verras "Initialisation..." en ligne de commande, signe que le fichier 'MesCommandes.lsp' est en train de se charger.

  • Upvote 1

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

Re-bonjour et merci pour vos réponses. Ça marche enfin !

 

Petit récap' pour comprendre pourquoi ça marche :D :

 

(command "_netload" "GLmapTextToOD.dll ")

 

Celui là j'ai pas trop compris, c'est une commande spécifique pour charger les dll ?

Pour ma part les dll sont dans un dossier dont le chemin et enregistré comme chemin de recherche.

Du coup, je charge le lisp et ce dernier entraîne le chargement du dll associé non ?

 

(autoload "ARMA" '("ARMA"))

 

Ici autoload pour chargement au premier appel de la commande

"ARMA" pour la commande à charger

'("ARMA") pour le texte à afficher en cas de chargement ?

 

(prompt "\nChargement de accadoc.lsp.")

 

Celle ci je ne la comprend pas

"\nChargement de accadoc.lsp." c'est juste du texte pour savoir ce qu'il se passe ?

prompt c'est ce qu'il me manquait au début pour que mon fichier se charge ?

 

(load "LongT.lsp" "Le fichier 'LongT.lsp' n'a pas pu être chargé")

 

load "LongT.lsp" pour charger le lisps à l'ouverture d'un dessin (avec acaddoc.lsp)

"Le fichier 'LongT.lsp' n'a pas pu être chargé" Texte à afficher si la commande ne se charge pas ?

C'est l’apostrophe et les parenthèses qui font la différence avec le texte précédent ?

 

(autoload "MesCommandes.lsp" '("cmd1" "cmd2"))

 

ici au premier appel d'une des commandes cmd1 ou cmd2, les deux commandes sont chargés, par contre il faut créer un autre fichier lisp appelé "MesCommandes.lsp" avec un code comme le suivant ?

 

(prompt "\nChargement de accadoc.lsp.")
(load "LongT.lsp" "Le fichier 'LongT.lsp' n'a pas pu être chargé")
(load "STOT.lsp" "Le fichier 'STOT.lsp' n'a pas pu être chargé")

 

Si "\nChargement de accadoc.lsp." n'est qu'un texte je peux remplacer accadoc.lsp par MesCommandes.lsp ?

 

d'avance merci

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Tu trouveras dans Introduction à AutoLISP (sur cette page) des informations en français sur le chargement des fichiers LISP dans la section 3 et sur l'affichage des messages (prompt) dans la section 11.

Tu peux aussi consulter l'aide (en anglais) pour les fonctions load, autoload et prompt.

  • Upvote 1

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

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é