Betölthet AutoLISP rutinokat az indításkor, és bizonyos parancsokat vagy függvényeket a rajzszerkesztés meghatározott fázisaiban automatikusan is futtathat.
Az AutoCAD-alapú termékek három, felhasználó által definiálható fájl tartalmát töltik be automatikusan: az acad.lsp, az acaddoc.lsp és az aktuális testreszabási fájlhoz tartozó MNL-fájlt.
Alapértelmezés szerint az acad.lsp fájlt a rendszer csak egyszer tölti be a program elindításakor, ezzel ellentétben az acaddoc.lsp minden egyes dokumentumnál (vagy rajznál) betöltődik. Ez lehetővé teszi, hogy az acad.lsp fájl betöltésére az alkalmazás indításakor, az acaddoc.lsp fájl betöltésére pedig a dokumentum (vagy rajz) indításakor kerüljön sor. Ezen induláskor betöltendő fájlok alapértelmezett betöltési módja az ACADLSPASDOC rendszerváltozó értékének megváltoztatásával módosítható.
Ha e fájlok valamelyike S::STARTUP típusú függvényt definiál, a rutin futtatása közvetlenül a rajz teljes inicializálása után történik. Használhatja az ALKTÖLT parancs Indítópult opcióját is, amely anélkül tölti be az adott alkalmazást, hogy bármely fájlt szerkesztenie kellene.
Az acad.lsp és az acaddoc.lsp induláskor betöltődő fájlok nem részei az AutoCAD-alapú programoknak. Ezeket a felhasználónak kell létrehoznia és karbantartania.
Az AutoLISP-fájlok betöltésekor a fájlban található parancsdefiníciók memóriát használnak akkor is, ha nem használja a parancsokat. Az AutoLISP autoload függvénye anélkül tesz elérhetővé egy parancsot, hogy az egész rutint a memóriába töltené. A következő kód hozzáadása az acaddoc.lsp fájlhoz automatikusan betölti a PARANCS1, a PARANCS2 és a PARANCS3 parancsot a cmds.lsp fájlból, valamint az ÚJPARANCS parancsot a newcmd.lsp fájlból.
(autoload "CMDS" '("CMD1" "CMD2" "CMD3")) (autoload "NEWCMD" '("NEWCMD"))
Amikor a parancspromptnál első alkalommal írja be egy automatikusan betöltődő parancs nevét, az AutoLISP a teljes parancsdefiníciót betölti a megfelelő fájlból. Az AutoLISP az autoarxload függvényt is tartalmazza az ObjectARX-alkalmazások számára.
Ha rendszeresen használ speciális AutoLISP-rutinokat, létrehozhat egy acad.lsp fájlt. Az AutoCAD elindításakor a program a támogatási fájlok keresési útvonalán megkeresi az acad.lsp fájlt. Ha megtalálja az acad.lsp fájlt, betölti a memóriába.
Mivel az acad.lsp fájlt csak az alkalmazásspecifikus indítási rutinok esetében lehet használni, az acad.lsp fájlban definiált függvények és rutinok csak az első rajzban érhetők el. Azokat a rutinokat, amelyeket az összes dokumentumban elérhetővé szeretne tenni, áthelyezheti az acad.lsp fájlból az acaddoc.lsp fájlba.
Az acad.lsp és acaddoc.lsp fájl javasolt funkcióit felül lehet bírálni az ACADLSPASDOC rendszerváltozóval. Ha az ACADLSPASDOC rendszerváltozó értéke 0 (alapbeállítás), az acad.lsp fájl csak egyszer töltődik be: az alkalmazás indításakor. Ha értéke 1, akkor a program az acad.lsp fájlt minden egyes új rajz létrehozásánál vagy egy meglévő megnyitásánál betölti.
Az acad.lsp fájl tartalmazhat egy vagy több rutinhoz tartozó AutoLISP-kódot, illetve állhat fájlbetöltő load függvényhívások sorozatából is. Az utóbbi módszer előnyösebb, mivel a kód módosítása egyszerűbb. Ha acad.lsp fájlként menti a következő kódot, a mysessionapp1.lsp, a databasesynch.lsp és a drawingmanager.lsp fájlok a program minden egyes indításakor betöltődnek.
(load "mysessionapp1") (load "databasesynch") (load "drawingmanager")
Az acaddoc.lsp fájl minden egyes dokumentum (vagy rajz) inicializálásához hozzátartozik. Ez a fájl akkor hasznos, ha minden egyes új rajz létrehozásakor (vagy egy meglévő betöltésekor) be kíván tölteni egy AutoLISP-rutinokból álló könyvtárat.
A rajzok megnyitásakor az AutoCAD minden alkalommal egy acaddoc.lsp fájlt keres a könyvtárelérési útvonalon. és ha talál egyet, annak tartalmát a memóriába tölti. Az acaddoc.lsp fájl minden rajz esetén betöltődik, függetlenül az ACADLSPASDOC rendszerváltozó értékétől.
A legtöbb felhasználó egyetlen acaddoc.lsp fájllal rendelkezik az összes dokumentum alapú AutoLISP-rutinhoz. A program az acaddoc.lsp fájlt a könyvtárelérési útvonal által definiált sorrendben keresi. Ezt kihasználva minden egyes rajzkönyvtárban más tartalmú acaddoc.lsp fájl kerülhet, amelyek specifikus AutoLISP-rutinokat tölthetnek le az egyes rajz- és feladattípusokhoz.
Az acaddoc.lsp fájl tartalmazhatja egy vagy több rutin AutoLISP-kódját, de állhat fájlbetöltő load függvényhívások sorozatából is. Az utóbbi módszer előnyösebb, mivel a kód módosítása egyszerűbb. Ha acaddoc.lsp fájlként menti a következő kódot, a mydocumentapp1.lsp, a build.lsp és a counter.lsp fájlok az új dokumentumok megnyitásakor minden alkalommal betöltődnek.
(load "mydocumentapp1") (load "build") (load "counter")
Amikor a program egy testreszabási (CUI/CUIx) fájlt tölt be, egyúttal egy azonos nevű .MNL kiterjesztésű fájlt is keres. és ha megtalálja, annak tartalmát a memóriába tölti. Ez a módszer biztosítja, hogy a felhasználói felület elemeinek működéséhez szükséges AutoLISP-függvényeket a program mindig betöltse.
Az acad.cuix testreszabási fájl például az acad.mnl fájlt keresi, amely számos, a felhasználói felület elemei által használt AutoLISP funkciók határoz meg a testreszabási fájlban. A program az MNL-fájlt az acaddoc.lsp fájl után tölti be.
(command "menu" "newmenu") (princ "Newmenu utilities… Loaded.") (Princ)
Ebben a példában a princ függvény meghívása használható állapotüzenetek megjelenítésére. A princ függvény első meghívásakor a parancspromptnál a következő üzenet jelenik meg:
Újmenü eszközök… Betöltve.
A princ második meghívására az AutoLISP-függvény befejeződik. A princ függvény második meghívása nélkül az üzenet kétszer jelenne meg. Ahogyan az előzőekben olvashatta, a load függvény hívásakor a hibakezelés argumentum megadásával különleges óvintézkedéseket is tehet.
A rajz inicializálása után végrehajtandó valamilyen beállítási művelet végrehajtására S::STARTUP függvényt definiálható.
A LISP-fájlokat (acad.lsp, acaddoc.lsp és MNL) a program még a rajz teljes inicializálása előtt betölti a memóriába. Ez általában nem okoz problémát, hacsak nem szeretné használni a command függvényt, amelynek működése nem biztosított a rajz teljes inicializálása előtt.
Ha felhasználói S::STARTUP függvény szerepel az acad.lsp, acaddoc.lsp vagy MNL-fájlban, a program meghívja azt egy új rajz elindításakor vagy egy meglévő rajz megnyitásakor. Így a beállítási műveletek elvégzéséhez egy S::STARTUP definíciót helyezhet el az indításkor betöltődő AutoLISP-fájlban.
Ha például a SRAFFOZ parancsot felül szeretné írni egy üzenet hozzáadásával, és át kíván térni a HSRAFFOZ parancsra, akkor használjon egy acaddoc.lsp fájlt, amely a következőket tartalmazza:
(defun C:HATCH ( ) (alert "Using the BHATCH command!") (princ "\nEnter OLDHATCH to get to real HATCH command.\n") (command "BHATCH") (princ) ) (defun C:OLDHATCH ( ) (command ".HATCH") (princ) ) (defun-q S::STARTUP ( ) (command "undefine" "hatch") (princ "\nRedefined HATCH to BHATCH!\n") )
A rajz inicializálása előtt a SRAFFOZ és RÉGISRAFFOZ parancs új definíciójának megadása a defun függvénnyel történik. A rajz inicializálása után a program meghívja az S::STARTUP függvényt, és törli a SRAFFOZ eredeti definícióját.
Mivel az S::STARTUP függvényt sok helyen lehet definiálni (acad.lsp, acaddoc.lsp és MNL-fájlban, vagy ezek bármelyikéből betöltött AutoLISP-fájlban), a korábban definiált S::STARTUP függvény felülírható.
A következő példa arra mutat egy módszert, hogy hogyan gondoskodhat arról, hogy az indításkor betöltődő függvény megfelelően tudjon működni a többi függvénnyel.
(defun-q MYSTARTUP ( )
... indításkor betöltődő függvény ...
) (setq S::STARTUP (append S::STARTUP MYSTARTUP))
Az előző kód az indításkor betöltődő függvényt hozzáfűzi egy meglévő S::STARTUP függvényhez, majd újradefiniálja az S::STARTUP függvényt úgy, hogy az tartalmazza a felhasználó indításkor betöltendő kódját. Ez a módszer attól függetlenül megfelelően működik, hogy létezett-e előzőleg S::STARTUP függvény.