|
AutoCAD... AutoLISP... VisualLISP... |
|
[64] Menu + autoload |
|
Jedną z cech adaptacyjnych AutoCAD-a, jest możliwość dołączania przez użytkownika własnego menu. Pozwala to na gromadzenie w jednym miejscu makr, poleceń, programów i innych narzędzi w zindywidualizowany, wygodny i najbardziej odpowiadający potrzebom użytkownika sposób. Cecha ta jest dostępna w podobny sposób we wszystkich wersjach AutoCAD-a, pomimo tego że w ostatnim okresie definicja plików menu użytkownika radykalnie się zmieniła (w miejsce plików *.mnu, *.mns i *.mnr, wprowadzono pliki o innej strukturze: *.cui i *.cuix). W celu zapewnienia wstecznej zgodności w najnowszych wersjach AutoCAD-a, nadal obsługiwane są stare wersje menu (oparte o plik *.mnu). Warto tutaj wspomnieć o specjalnym pliku lispowym związanym z menu, to jest o pliku typu *.mnl. Jest to plik automatycznie wczytywany (jeśli istnieje) zaraz po każdorazowym wczytaniu plików menu o tej samej nazwie (zarówno dla menu starego i nowego typu). Pozwala to na ładowanie pewnych funkcji AutoLISP-a, razem z wczytywanym menu. Razem stanowią (pliki menu i mnl) doskonały sposób na ładowanie własnych programów LISP-owych. Jak wiadomo każdy plik programu aby mógł być wykorzystany musi zostać wczytany do pamięci (funkcją load). Przy dużej ilości definicji funkcji i poleceń zdefiniowanych w LISP-ie, każdorazowe wczytywanie wszystkich plików, zajmowałoby niepotrzebnie obszary pamięci. Dlatego dobrym rozwiązaniem jest tzw. wczytywanie na żądanie - w czym pomaga funkcja o nazwie autoload, a której wywołania mogą być umieszczane w pliku typu *.mnl, wczytywanym z własnym menu. Funkcja autoload posiada dwa argumenty: nazwę pliku oraz listę poleceń w nim zdefiniowanych. Jeżeli plik ma rozszerzenie lsp, można go nie podawać (pliki fas i vlx należy podać z rozszerzeniem). Pamiętać należy że pliki muszą znajdować się w tzw. bibliotecznej ścieżce poszukiwań AutoCAD-a. Przykładowe wyrażenie funkcji autoload może wyglądać tak: (autoload "bl-redef.vlx" '("BL-REDEF"))
albo: (autoload "lwp_util.vlx" '("PLAB" "PLRB" "PLRAB" "PLAV" "PLAVM" "PLEX" "PLO" "PLC" "PLREV" "PLCV" "PLWZ" "PLW" "PLWS" "PLSET" "PLINF"))
Funkcja autoload działa tak: W momencie wprowadzenia do linii poleceń (lub wywołania z menu lub paska narzędzi) jednego z poleceń zdefiniowanych na liście jako drugi argument funkcji, wczytywany jest (jeśli nie był wcześniej) plik określony jako pierwszy argument. Funkcja zwraca nil. Wykorzystywanie takiego mechanizmu pozwala na wczytywanie plików lispowych tylko w przypadku konieczności ich wykorzystywania. Funkcja autoload może być wywoływana z dowolnego pliku *.lsp lub *.mnl. |
![]()
aktualizacja: 04-05-2010
|
![]() |
|
|
|
|
|