Úvod do programových rozhraní – AutoLISP a Visual LISP, 2. díl
Přehled automatického načtení AutoLISPu AutoCAD načte automaticky obsah tří uživatelem definovatelných souborů: acad.lsp, acaddoc.lsp a soubor MNL, který doprovází aktuální nabídku. Implicitně se soub…
Přehled automatického načtení AutoLISPu
AutoCAD načte automaticky obsah tří uživatelem definovatelných souborů: acad.lsp, acaddoc.lsp a soubor MNL, který doprovází aktuální nabídku. Implicitně se soubor acad.lsp načte pouze jednou při spuštění AutoCADu, zatímco soubor acaddoc.lsp je načten spolu s každým dokumentem (výkresem). To umožní asociovat soubor acad.lsp se spuštěním aplikace a soubor acaddoc.lsp s otevřením dokumentu (výkresu). Tuto výchozí metodu načítání lze upravit změnou systémové proměnné ACADLSPASDOC.
Pokud jeden z těchto souborů definuje funkci speciálního typu S::STARTUP, tato funkce se spustí bezprostředně po úplné inicializaci výkresu. Alternativní možností je příkaz APLČTI, který obsahuje volbu Po spuštění, jež načte specifikovanou aplikaci bez potřeby nějaké úpravy souborů.
Spouštěcí soubory acad.lsp a acaddoc.lsp nejsou dodávány s AutoCADem. Je na uživateli, aby tyto soubory v případě potřeby vytvořil a upravoval.
Automatické načítání příkazů
Při načítání příkazů funkcemi load a command dochází k tomu, že definice příkazů zahlcují paměť počítače, i když příkaz nepoužíváte. Funkce AutoLISPu autoload načítá požadovaný příkaz bez načtení celé funkce do paměti. Pokud přidáte do souboru acaddoc.lsp následující část, příkazy CMD1, CMD2 a CMD3 budou načteny ze souboru cmds.lsp a příkaz NEWCMD ze souboru newcmd.lsp.
(autoload „CMDS“ ‚(„CMD1“ „CMD2“ „CMD3“))
(autoload „NEWCMD“ ‚(„NEWCMD“))
Jestliže zadáte název příkazu poprvé na příkazovém řádku, AutoLISP načte celou definici příkazu ze zadaného souboru. AutoLISP rovněž nabízí funkci autoarxload pro aplikace ObjectARX. Viz autoload a autoarxload v dokumentaci AutoLISP Reference (z nabídky AutoCADu Nápověda vyberte položku Nápověda pro vývojáře).
Poznámka: Podobně pojmenované spouštěcí soubory AutoLISPu jsou načteny podle jejich upravené časové značky; pokud neurčíte úplný název souboru, načte se soubor LSP s nejnovější časovou značkou (včetně přípony soubory).
Soubor acad.lsp
Soubor acad.lsp je užitečný tehdy, pokud chcete načíst knihovnu funkcí AutoLISPu při každém spuštění AutoCADu. Pokaždé při spuštění AutoCADu program hledá v cestě knihovny soubor acad.lsp. Jestliže jej nalezne, načte soubor do paměti.
Soubor acad.lsp je načten při každém otevření výkresu, když je AutoCAD spuštěn z pracovní plochy Windows. Protože soubor acad.lsp je určen k inicializaci aplikace, všechny procedury a proměnné definované v souboru acad.lsp budou dostupné pouze pro první výkres. Všechny procedury, které mají být dostupné pro všechny dokumenty, je nutné přesunout ze souboru acad.lsp do souboru acaddoc.lsp.
Doporučená funkčnost souborů acad.lsp a acaddoc.lsp může být změněna systémovou proměnnou ACADLSPASDOC. Jestliže je systémová proměnná ACADLSPASDOC nastavena na hodnotu 0 (výchozí nastavení), soubor acad.lsp je načten pouze jednou: při spuštění aplikace. Je-li systémová proměnná ACADLSPASDOC nastavena na hodnotu 1, soubor acad.lsp je znovu načten s každým novým výkresem.
Systémová proměnná ACADLSPASDOC je ignorována v rozhraní jednoho dokumentu (režim SDI). Když je systémová proměnná SDI nastavena na hodnotu 1, systémová proměnná LISPINIT řídí opakovanou inicializaci AutoLISPu mezi výkresy. Když je systémová proměnná LISPINIT nastavena na hodnotu 1, funkce AutoLISPu a proměnné jsou platné pouze v aktuálním výkresu; pokaždé, když otevřete nový nebo existující výkres, všechny funkce a proměnné budou z paměti odstraněny a soubor acad.lsp se znovu načte. Změna hodnoty proměnné LISPINIT, kdy je systémová proměnná SDI nastavena na hodnotu 0, nemá význam.
Soubor acad.lsp může obsahovat kód AutoLISPu pro jednu nebo více procedur nebo pouze sérii volání funkce load. Druhá metoda je výhodnější z hlediska úprav. Pokud uložíte následující řádky do souboru acad.lsp, soubory mysessionapp1.lsp, databasesynch.lsp a drawingmanager.lsp budou načtené při každém spuštění AutoCADu.
(load „mysessionapp1“)
(load „databasesynch“)
(load „drawingmanager“)
Upozornění! Neupravujte rezervovaný soubor acad2000.lsp. Autodesk nabízí soubor acad2000.lsp, který obsahuje definované funkce AutoLISPu, které jsou vyžadovány AutoCADem. Tento soubor je načten do paměti těsně před načtením souboru acad.lsp.
Soubor acaddoc.lsp
Při každém otevření výkresu AutoCAD hledá v cestě knihovny soubor acaddoc.lsp. Pokud jej nalezne, načte soubor do paměti. Soubor acaddoc.lsp je vždy načítán s každým výkresem bez ohledu na nastavení systémových proměných ACADLSPASDOC a LISPINIT.
Většina uživatelů bude mít pouze jeden soubor acaddoc.lsp pro všechny dokumenty založené na procedurách AutoLISPu. AutoCAD hledá soubor acaddoc.lsp v pořadí definovaném cestou knihovny; proto můžete mít díky této funkci různý soubor acaddoc.lsp v každém výkresovém adresáři, který načte specifické procedury AutoLISPu pro určité typy výkresů nebo úloh.
Soubor acaddoc.lsp může obsahovat kód AutoLISPu pro jednu nebo více procedur nebo pouze sérii volání funkce load. Druhá metoda je výhodnější z hlediska úprav. Pokud uložíte následující řádky do souboru acaddoc.lsp, soubory mydocumentapp1.lsp, build.lsp a counter.lsp budou načtené pokaždé při spuštění AutoCADu.
(load „mydocumentapp1“)
(load „build“)
(load „counter“)
AutoCAD hledá soubor acaddoc.lsp v pořadí definovaném cestou knihovny; proto můžete mít díky této funkci různý soubor acaddoc.lsp v každém výkresovém adresáři. Potom můžete načíst procedury AutoLISPu pro určité typy výkresů nebo úloh.
Upozornění! Neupravujte rezervovaný soubor acad2000doc.lsp. Autodesk nabízí soubor acad2000doc.lsp, který obsahuje definované funkce AutoLISPu, které jsou vyžadovány AutoCADem. Tento soubor je načten do paměti těsně před načtením souboru acaddoc.lsp.