Możliwe jest wczytywanie procedur AutoLISP podczas uruchamiania oraz wykonywanie poleceń lub funkcji w określonych momentach podczas sesji rysunkowej.
Produkty oparte na programie AutoCAD automatycznie wczytują zawartość trzech definiowalnych przez użytkownika plików: acad.lsp, acaddoc.lsp oraz pliku MNL, który towarzyszy bieżącemu plikowi adaptacji.
Domyślnie plik acad.lsp jest wczytywany tyko raz, przy uruchomieniu programu, podczas gdy plik acaddoc.lsp jest wczytywany wraz z każdym dokumentem (lub rysunkiem). Pozwala to połączyć wczytywanie pliku acad.lsp z uruchamianiem aplikacji i wczytywanie pliku acaddoc.lsp z otwieraniem dokumentu (lub rysunku). Domyślna metoda wczytywania tych plików może zostać zmodyfikowana przez zmianę ustawienia zmiennej systemowej ACADLSPASDOC.
Jeśli jeden z tych plików definiuje funkcję specjalnego typu S::STARTUP, procedura ta jest uruchamiana bezpośrednio po zakończeniu inicjalizacji rysunku. Polecenie WCZYTAJAPL zapewnia też opcję Pakiet uruchomieniowy, która wczytuje określone aplikacje bez potrzeby edycji jakichkolwiek plików.
Pliki startowe acad.lsp i acaddoc.lsp nie są dostarczane z produktami opartymi na programie AutoCAD. Tworzenie i utrzymywanie tych plików zależy tylko od użytkownika.
Po wczytaniu pliku AutoLISP definicje poleceń w pliku zajmują pamięć, niezależnie od tego, czy polecenia są rzeczywiście używane. Funkcja AutoLISP autoload udostępnia polecenie bez wczytywania do pamięci całej procedury. Dodanie poniżej przedstawionych kodów do pliku acaddoc.lsp powoduje automatyczne wczytanie poleceń POL1, POL2 i POL3 z pliku cmds.lsp oraz polecenia NEWCMD z pliku newcmd.lsp.
(autoload "CMDS" '("CMD1" "CMD2" "CMD3")) (autoload "NEWCMD" '("NEWCMD"))
Przy pierwszym wprowadzeniu automatycznie wczytanego polecenia w wierszu polecenia AutoLISP wczytuje całą definicję polecenia z pliku skojarzonego. AutoLISP zawiera także funkcję autoarxload dla aplikacji ObjectARX.
Jeżeli określone procedury AutoLISP są stale używane, można utworzyć plik acad.lsp. Po uruchomieniu program AutoCAD szuka pliku acad.lsp w ścieżce wyszukiwania plików pomocniczych. Po jego znalezieniu plik acad.lsp wczytywany jest do pamięci.
Ponieważ plik acad.lsp jest przeznaczony do użycia dla procedur startowych określonych aplikacji, wszystkie funkcje i zmienne zdefiniowane w acad.lsp są dostępne tylko w pierwszym rysunku. Procedury, które powinny być dostępne we wszystkich dokumentach, mogą być przeniesione z pliku acad.lsp do nowego pliku acaddoc.lsp.
Zalecane działanie plików acad.lsp i acaddoc.lsp może zostać zmienione przez ustawienie zmiennej systemowej ACADLSPASDOC. Jeśli zmienna systemowa ACADLSPASDOC ma wartość 0 (ustawienie domyślne), wówczas plik acad.lsp jest wczytywany tylko raz, tj. przy uruchomieniu aplikacji. Jeśli ta zmienna ma wartość 1, plik acad.lsp jest ponownie wczytywany podczas tworzenia nowego rysunku lub otwierania istniejącego pliku rysunku.
Plik acad.lsp może zawierać kody AutoLISP dla jednej lub większej liczby procedur bądź po prostu szereg wywołań funkcji load. Zaleca się stosowanie tej drugiej metody, ponieważ przeprowadzanie modyfikacji jest wówczas łatwiejsze. Po zapisaniu poniższego kodu w postaci pliku o nazwie acad.lsp pliki mysessionapp1.lsp, databasesynch.lsp i drawingmanager.lsp są wczytywane przy każdym uruchomieniu programu.
(load "mysessionapp1") (load "databasesynch") (load "drawingmanager")
Plik acaddoc.lsp jest przeznaczony do kojarzenia z każdą inicjalizacją dokumentu (lub rysunku). Plik ten pozwala na wczytywanie do pamięci biblioteki procedur AutoLISP przy tworzeniu nowego (lub otwarciu istniejącego) rysunku.
Za każdym razem, gdy otwierany jest rysunek, program AutoCAD przeszukuje ścieżkę dostępu do biblioteki w celu wyszukania pliku acaddoc.lsp. Jeśli plik ten zostanie znaleziony, jest on wczytywany do pamięci operacyjnej. Plik acaddoc.lsp jest zawsze wczytywany wraz z każdym rysunkiem, niezależnie od ustawienia zmiennej ACADLSPASDOC.
Większość użytkowników posiada pojedynczy plik acaddoc.lsp dla wszystkich procedur AutoLISP opartych na dokumentach. Program wyszukuje plik acaddoc.lsp w kolejności określonej ścieżką dostępu do biblioteki, dlatego też w każdym z katalogów rysunków można umieszczać inny plikacaddoc.lsp, który będzie wczytywać określone procedury AutoLISP dla różnych typów rysunków i zadań.
Plik acaddoc.lsp może zawierać kody AutoLISP dla jednej lub większej liczby procedur bądź po prostu szereg wywołań funkcji load. Zaleca się stosowanie tej drugiej metody, ponieważ przeprowadzanie modyfikacji jest wówczas łatwiejsze. Po zapisaniu poniższego kodu do pliku o nazwie acaddoc.lsp pliki mydocumentapp1.lsp, build.lsp i counter.lsp są wczytywane przy każdym otwarciu nowego dokumentu.
(load "mydocumentapp1") (load "build") (load "counter")
Gdy program wczytuje plik adaptacji (CUI/CUIx), szuka pliku MNL o pasującej nazwie. Po znalezieniu pliku jest on wczytywany do pamięci operacyjnej. Ten tryb postępowania zapewnia wczytanie funkcji AutoLISP niezbędnych do poprawnego działania elementów interfejsu użytkownika.
Przykładowo plik dostosowywania acad.cuix wyszukuje plik acad.mnl, który może definiować wiele funkcji AutoLISP używanych przez elementy interfejsu użytkownika w pliku dostosowywania. Plik MNL jest wczytywany po pliku acaddoc.lsp.
(command "menu" "newmenu") (princ "Newmenu utilities… Loaded.") (Princ)
W przykładzie tym wywołania funkcji princ są używane do wyświetlenia komunikatów o stanie. Pierwsze wywołanie funkcji princ wyświetla w wierszu polecenia następujący tekst:
Newmenu utilities… Wczytane.
Z kolei drugie wywołanie funkcji princ powoduje zakończenie funkcji bez żadnych komunikatów. Bez drugiego wywołania funkcji princ komunikat zostałby wyświetlony dwukrotnie. Jak wcześniej wspomniano, jako dodatkowy środek ostrożności przy wywoływaniu funkcji load można zastosować argument komunikat_o_błędzie.
Można zdefiniować funkcję S::STARTUP w taki sposób, aby wprowadzała różne ustawienia po inicjalizacji rysunku.
Pliki startowe LISP (acad.lsp, acaddoc.lsp i MNL) są wczytywane do pamięci przed zakończeniem inicjalizacji rysunku. Procedura ta zwykle przebiega bez problemów, o ile nie zachodzi potrzeba użycia funkcji command, która może nie działać poprawnie przed inicjalizacją rysunku.
Jeśli funkcja użytkownika S::STARTUP znajduje się w pliku acad.lsp, acaddoc.lsp lub MNL, jest wywoływana podczas tworzenia nowego rysunku lub otwierania istniejącego rysunku. W ten sposób można dołączyć definicję funkcji S::STARTUP do pliku startowego AutoLISP, aby umożliwić wykonywanie operacji konfiguracyjnych.
Jeśli na przykład użytkownik chce nadpisać standardowe polecenie KRESKUJ przez dodanie komunikatu i przełączenie do polecenia GKRESKUJ, należy użyć pliku acaddoc.lsp, zawierającego poniższy kod:
(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") )
Przed inicjalizacją rysunku nowe definicje poleceń KRESKUJ i GKRESKUJ tworzone są przez funkcję defun. Po inicjalizacji rysunku wywoływana jest funkcja S::STARTUP, a standardowa definicja polecenia KRESKUJ jest usuwana.
Ponieważ funkcję S::STARTUP można definiować w wielu lokalizacjach (plikach acad.lsp, acaddoc.lsp lub MNL oraz innych plikach AutoLISP wczytanych z jednego z wymienionych), możliwe jest zastąpienie wcześniej zdefiniowanej funkcji S::STARTUP.
Poniższy przykład przedstawia jedną z metod upewnienia się, że używana funkcja startowa działa z innymi funkcjami.
(defun-q MYSTARTUP ( )
... używana funkcja startowa ...
) (setq S::STARTUP (append S::STARTUP MYSTARTUP))
Powyższy kod dołącza używaną funkcję startową do istniejącej funkcji S::STARTUP, a następnie ponownie definiuje funkcję S::STARTUP, aby włączyć do niej używany kod startowy. Metoda ta działa poprawnie bez względu na to, czy funkcja S::STARTUP wcześniej istniała.