Aller au contenu

faut-il limiter le nombre de routines LISP ?


Messages recommandés

Posté(e)

Une question que je me pose en passant : le nombre de routines chargées automatiquement au démarrage d'AutoCad influe-t-il significativement sur ses performances ? (il faut dire que j'en charge plus de 1000 !).

 

Si oui, y a-t-il un moyen pour que certaines routines ne se chargent que si on les "appelle" (du style : tant que je n'ai pas tapé "TOTO" sur la ligne de commande, le LISP "TOTO" ne se charge pas – cela dit, ça pourrait signifier un temps de chargement complémentaire équivalent à la perte de performance évoquée ci-dessus...on se mord la queue.

 

Merci !

 

Posté(e)

Salut,

 

Le nombre de routines (ou plutôt le 'poids' de routines) chargées automatiquement influe certainement sur l'ouverture de chaque nouveau document, mais je pense qu'il faut qu'il en ait vraiment beaucoup pour que ce soit vraiment significatif.

 

Il y a moyen de ne charger un fichier LISP qu'au premier appel d'une des commandes qui y sont définies en utilisant la fonction LISP autoload.

 

Pour ça, il faut organiser le chargement des routines en utilisant les fichiers de chargement automatique (acad.lsp, acaddoc.lsp, et les fichier .mnl de même nom que les fichier .cui)

 

Par défaut (ACADLSPASDOC = 0):

acad.lsp est chargé une seule fois au démarrage de chaque démarrage d'une nouvelle session

acaddoc.lsp est chargé à l'ouverture de chaque nouveau document

MNL : chaque fichier .mnl du même nom qu'un fichier CUI est chargé à l'ouverture de chaque document.

 

 

Par exemple, les fichiers LISP sont placés dans un répertoire du chemin de recherche.

 

Dans le fichier AutoCAD.lsp on écrit des expressions LISP pour ce qui ne nécessite qu'un chargement par session : (vl-load-com), établissement des variables système enregistrées dans la base de registre (setvar "pickfirst" 1), chargement des DLLs .NET (command "_netload" "CustomOsnap17.dll")

 

Dans le fichier acadoc.lsp ou les fichier MNL de même nom que les fichiers CUI, on écrit des expressions LISP qui chargent les fichiers nécessaires avec les fonctions LISP load pour les fichiers contenant des sous routines devant être chargée à l'ouverture de chaque document, et la fonction autoload pour les commandes définies en LISP.

 

(load "SousRoutines.lsp")

où SousRoutines contient des sous routines devant être chargées à l'ouverture de chaque document.

 

(setvar "ucsfollow" 0)

la variable UCSFOLLOW est enregistrée dans le dessin.

 

(autoload "toto" '("toto"))

Le fichier "toto.lsp" ne sera chargé qu'au premier appel de la commande "toto"

 

(autoload "Incrementer"

'("incsuf" "inctxt" "incatt" "incsel" "incadd" "incr")

)

Le fichier "Incrementer.lsp" contient les définitions des commandes "incsuf", "inctxt", "incatt", "incsel", "incadd" et "incr", il ne sera chargé qu'au premier appel d'une de ces commandes.

 

Regarde dans l'aide : Introduction aux interfaces de programmation > AutoLISP et Visual LISP > Chargement et exécution automatiques des routines AutoLISP

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

Posté(e)

Merci pour cette réponse archi-pointue.

 

Comme je suis archi-charrette et pas archi-doué en programmation, je crois que je vais m'en tenir là pour l'instant, et j'y reviendrai à un moment plus calme.

 

J'espère que le soin que tu as mis à me répondre pourra servir à d'autres.

 

Merci encore.

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é