<

Le Coin des AutoCADiens

Le site de langue française des utilisateurs & développeurs pour AutoCAD

Le chargement automatique des applications


Avec AutoCAD 2000
Avec AutoCAD 2000 c'est devenu très facile de charger automatiquement une application quelconque en lisp ou VBA avec des fichiers ayant une extension lsp, fas, arx, vlx, dvb ou dbx).
Dans le menu déroulant Outils, choisissez l'option Charger une application ... pour ouvrir la boîte de dialogue Charger/Décharger les applications.
Dans cette boîte de dialogue, cliquez sur le bouton Contenu dans la zone Au démarrage.

Démarrage

La boîte de dialogue Applications lancées au démarrage s'ouvre alors. Cliquez sur le bouton Ajouter... qui ouvrira la boîte de dialogue Ajouter fichier aux applications lancées au démarrage. Naviguez alors pour choisir le fichier désiré.

Les fichies Acad.lsp et dérivés
AutoCAD 2000 :

AutoCAD charge automatiquement certains fichiers AutoLISP :
Deux fichiers, acad2000.lsp et acad2000doc.lsp qui sont spécifiques à AutoCAD 2000.
Quoique qu'ils puissent être utilisés par tout le monde, AutoCAD recommande que vous réserviez ces fichiers pour une utilisation par Autodesk.
  • acad2000.lsp est chargé une fois par session d'AutoCAD seulement, quand vous chargez AutoCAD.
  • acad2000doc.lsp est chargé, lui, dans la session initiale et ensuite chaque fois qu'un dessin est ouvert.
Deux autres fichiers AutoLISP chargés automatiquement vous sont réservés.
Ces fichiers sont :
  • acad.lsp qui, normalement, est chargé une fois par session AutoCAD
    Nota : Si la variable système ACADLSPASDOC a la valeur 0 (paramètre par défaut), le fichier acad.lsp n'est chargé qu'une seule fois, au démarrage de l'application ; si ACADLSPASDOC a la valeur 1, le fichier acad.lsp est rechargé à chaque nouveau dessin.
  • acaddoc.lsp qui est chargé chaque fois qu'un dessin est ouvert.
Cela signifie pour vous que vous pouvez placer des routines d'initialisation différentes dans chaque fichier :
  • un fichier de routines pour l'initialisation d'AutoCAD (acad.lsp).
  • l'autre pour le travail sur les dessins (acaddoc.lsp).
Nota : Il est recommandé de ne pas mettre directement les routines dans ces fichiers mais simplement une série d'appels de fonctions par load.

Un cinquième fichier est également chargé automatiquement, s'il existe : menu_en_cours.mnl qui est un fichier de même nom que le fichier de menu du dessin en cours, avec l'extension .mnl.
Malgré l'extension, ce fichier est un fichier de routines autolisp ou généralement l'on met les routines spécifiques au menu. Par exemple, le menu standard d'AutoCAD, acad.mnu, nécessite le chargement du fichier acad.mnl qui définit diverses fonctions AutoLISP utilisées par le menu.

Vous pouvez placer une fonction S::STARTUP dans acad.lsp, acaddoc.lsp et également dans le fichier .mnl. Cependant, sachez qu'en plaçant différentes fonctions S::STARTUP dans plusieurs fichiers, seule la dernière fonction S::STARTUP chargée sera prise en compte. Voir le paragraphe s::startup pour éviter ce problème.

Vous devez créer vous-même acad.lsp, acaddoc.lsp et éventuellement le fichier .mnl.
Cependant, une fois que vous avez créé une routine AutoLISP et l'avez enregistrée sous l'un ou l'autre nom, vous pouvez ajouter des routines supplémentaires au même fichier.
Notez que certaines applications créent elles-même ces fichiers, et il est donc possible que vous les ayez déjà.
AutoCAD 2000 sait qu'il faut charger ces fichiers automatiquement, pour autant qu'ils existent.

L'ordre de chargement de ces fichiers d'initialisation est :
  1. Acad2000.lsp : Chargé par AutoCAD 2000
  2. Acad.lsp : Fichier d'initialisation défini par l'utilisateur chargé une fois au lancement d'AutoCAD 2000
  3. .
  4. Acad2000doc.lsp : Fichier d'initialisation de niveau Document (c'est-à-dire le dessin) chargé par AutoCAD 2000
  5. .
  6. Acaddoc.lsp : Fichier d'initialisation de niveau Document défini par l'utilisateur.
  7. menu.mnl : Fichier d'initialisation de niveau Menu défini par l'utilisateur.
Versions précédentes à AutoCAD 2000 :

Le paragraphe ci-dessus concernant AutoCAD 2000 est applicable aux versions précédentes d'AutoCAD, en tenant compte des remarques suivantes :
  • Remplacez Acad2000.lsp par AcadR14.lsp ou AcadR13.lsp
  • Les fichiers Acad2000doc.lsp et Acaddoc.lsp n'existent pas et n'ont pas d'équivalents.(Seule la version 2000 permet d'ouvrir plusieurs dessins dans une même session d'AutoCAD)
La fonction s::startup

Les fichiers LISP peuvent être chargés au lancement d'AutoCAD en utilisant load dans acad.lsp ou acaddoc.lsp.
Quelques lisps qui exigent de fonctionner avec un menu adapté doivent être chargé à partir du fichier menu.mnl correspondant. Le fichier menu.mnl, s'il est différent, devrait charger ou contenir les routines de acad.mnl.

Les fichiers lisp qui appellent des commandes au démarrage doivent être définis dans la fonction S::STARTUP de acad.lsp ou acaddoc.lsp. Cette fonction est appelée automatiquement au démarrage après l'initialisation.
Dans le cas contraire vous obtiendrez des erreurs "Command list interruption (6 . 2)".

Une fonction S::STARTUP pouvant être définie à divers emplacements (acad.lsp, acaddoc.lsp, fichier .mnl ou tout autre fichier AutoLISP chargé à partir de l'un de ces fichiers, elle pourrait écraser une autre fonction S::STARTUP existante. L'exemple figurant à la ligne 50 de l'exemple qui suit montre comment ajouter votre fonction de démarrage à une éventuelle autre fonction S::STARTUP existante.

Exemple de fichier d'autochargement



;;; ACAD.LSP ou Acaddoc.lsp    (C) R.ROSEC   FASOFT  22/04/2000
;;; Chargement automatique des commandes BiRaRR et du menu correspondant
;;; Pour version 13, 14 et 2000
;;;
;;; Pour R14 et 2000 supprimer la ligne "command menuload" 
;;; après la 1ère installation
;;; 
;; Pour les versions R13 et R14, utilisez defun au lieu de defun-q
(defun-q S::BIRARR()				; ligne 9
  (princ (load "ra" "\nFichier ra.lsp non chargé"))
  (princ (load "tbox" "\nFichier tbox.lsp non chargé"))
  (princ (load "birarr" "\nFichier BiRaRR.LSP non chargé"))
 ;; chargement automatique de fichier lisp  	; ligne 13
  (autoload "perp.lsp" '("perp"))
 ;; chargement automatique de fichier arx - Versions 13 & 14
  (autoarxload "porte.arx" '("porte"))
 ;; chargement automatique de fichier .vlx - Version 2000	
  (autoload "calc2.vlx" '("calc2"))    		; ligne 18
  (autoload "poutrl.vlx" '("poutrl"))
  (autoload "pef.vlx" '("pef"))
  (autoload "ecrou.vlx" '("ecrou"))
 ;; Chargement d'un menu partiel		; ligne 22
 ;; Pour les version AutoCAD 14 et 2000, supprimez les 5 lignes suivantes
  (setq *filedia* (getvar "filedia"))
  (setvar "filedia" 0)
  (command "_menuload" "birarr")		; ligne 26
  (menucmd "P7=+BiRaRR.pop1")
  (setvar "filedia" *filedia*)
 ;; chargement d'une routine VBA		; ligne 29
  (defun oblong()
    (setq *filedia* (getvar "filedia"))
    (setvar "filedia" 0)    
    (if (command "-vbarun" "boutonniere")
      (princ)
      (if (= "1" (getvar "USERS1"))
          (princ)
          (progn 
            ;; modifiez le chemin en conséquence   
            (command "_vbaload" "c:\\acad2000\\vba\\oblong.dvb")
            (setvar "USERS1" "1")
            (command "-vbarun" "boutonniere")
          )
      )
    )
    (setvar "filedia" *filedia*)
    (princ)
  )  ; fin defun oblong
)    ; fin defun s::birarr
;;
(setq S::STARTUP			; ligne 50
  (if (and S::STARTUP (listp S::STARTUP))
     (append S::STARTUP (cdr S::BIRARR))
      S::BIRARR 
  )
)

Quelques explications du code
  • Ligne 9 - Defun-q
    Defun-q est une nouvelle commande apparue en version 2000 qui est l'équivalent de l'ancienne fonction Defun des versions précédentes, et qui définit la fonction sous forme de liste.
    Conservez Defun pour les versions précédentes à la R2000.


  • Lignes 10 à 12
    Cette manière de charger un fichier en utilisant la commande load avec 2 arguments permet d'éviter l'interruption du processus de démarrage en cas d'erreur dans le chargement d'un fichier LISP.
    Si une erreur pendant le chargement survient, le message donné comme second argument est retourné, mais l'évaluation ne s'arrête pas. Ce second argument peut être n'importe quelle expression.


  • Ligne 14
    Exemple d'autochargement d'un fichier lisp.
    L'autochargement permet de ne charger le programme qu'au premier appel de la fonction diminuant ainsi le temps d'attente au début du dessin. Ainsi le programme n'est chargé que s'il est utilisé.
    "perp" correspond ici au nom de la nouvelle fonction.


  • Ligne 16
    Exemple d'autochargement d'un fichier .arx.
    Autochargement d'un fichier .arx pour les versions R13 et R14 d'AutoCAD.
    "porte" correspond ici au nom de la nouvelle fonction.


  • Lignes 18 à 21
    Exemple d'autochargement des fichiers .vlx.
    Autochargement de fichier .vlx pour AutoCAD 2000.
    Les fichiers .vlx sont des fichiers compilés par Visual Lisp et ne fonctionnent qu'avec AutoCAD 2000.


  • Lignes 24 à 28
    Exemple de chargement d'un menu partiel.
    Conservez ces lignes en version R13.
    Pour les versions R14 & 2000 vous pouvez utiliser ces lignes pour charger le menu la première fois mais comme ce menu est automatiquement pris en compte ensuite, vous devez alors supprimer ces 5 lignes pour éviter des messages d'erreurs intempestifs.


  • Lignes 30 à 47
    Exemple de chargement d'un programme VBA.
    Cet exemple de chargement d'un programmme VBA permet de vérifier auparavant si ce programme est déjà chargé.
    Pour plus d'explication, voir le "truc" Vérifier si un programme est déjà chargé.


  • Lignes 50 à 55
    Exemple de création de la fonction S::STARTUP.
    Cet exemple permet d'ajouter votre programme de démarrage, ici S::BIRARR à un éventuel autre programme S::STARTUP déjà chargé en mémoire. Sinon S::BIRARR devient la fonction S::STARTUP.

A

Google