

![]() ![]() |
Edytor oraz Debugger LISP oraz VISUAL LISP
Edytor LISP oraz VISUAL LISP między innymi:
- rozpoznaje składnię słów kluczowych języka LISP oraz VISUAL LISP
- pozwala na szybkie wprowadzanie poprawek w kodzie
- odczyt wartości zmiennych, które możemy dodać sobie do listy obserwowanych
- ustawianie punktów przerwań w analizowanym kodzie
- uruchamianie fragmentów kodu pomiędzy punktami przerwań
- badanie wykonywania wybranych fragmentów lub całości kodu
- wszystkie powyższe funkcje w efekcie dają bardzo dobrą kontrolę nad kodem źródłowym pisanej aplikacji
Uruchomienie edytora – polecenie: VLIDE
Aby uruchomić edytor VISUAL LISP wpisujemy w polecenie: VLIDE.

Polecenie VLIDE pozwalające uruchomić edytor LISP oraz VISUAL LISP
Edytor możemy również uruchomić poprzez wybranie z górnego menu rozwijanego opcji Narzędzia a następnie opcji Edytor Visual LISP.

Uruchamianie edytora VISUAL LISP z poziomu menu rozwijanego (dla menu klasycznego)
W menu wstążkowym edytor możemy wybrać poprzez kliknięcie w grupę opcji Zarządzanie a następnie Edytor Visual LISP.

Edytor Visual LISP – wybór z poziomu menu wstążkowego
Po wczytaniu edytora domyślnie otworzy nam się projekt nad, którym ostatnio pracowaliśmy. Na jego przykładzie pokażemy funkcjonalność edytora.

Widok edytora LISP oraz VISUAL LISP w ZWCAD
Napisana funkcja w edytorze
Jak widać na powyższym rysunku (Rys. Widok edytora LISP oraz VISUAL LISP w ZWCAD) mamy wczytaną prostą funkcję napisaną w LISP, która narysuje nam trójkąt oraz okrąg.
Z lewej strony mamy sekcję WATCH za pomocą której możemy obserwować wartości wybranych przez nas zmiennych. Na razie program trójkat_i_okrag nie jest uruchomiony w związku z tym zmienne te nie mają żadnych przypisanych wartości.
Wciskamy przycisk Launch ZWCAD aby uruchomić ZWCAD i mieć możliwość wczytania (do ZWCAD) funkcji trójkat_i_okrag, która obecnie znajduje się w edytorze. Po uruchomieniu funkcji będziemy mieli możliwość analizy jej wykonywania.

Wciskamy przycisk Launch ZWCAD
Wczytanie funkcji w ZWCAD 2020

Funkcją _APPLOAD (lub WCZYTAJAPL) uruchamiamy okno umożliwiające wczytanie aplikacji
Po naciśnięciu przycisku Launch ZWCAD i uruchomieniu programu ZWCAD w jego linię komend wpisujemy polecenie: _APPLOAD (polskiej wersji z ZWCAD może być to komenda WCZYTAJAPL).

Wczytanie aplikacji w ZWCAD - Dodajemy plik do wczytania
Naciskamy przycisk Dodaj plik

Wybór pliku napisanego w języku LISP - w naszym przypadku trojkat_i_okrag.lsp
Otworzy nam się okno dialogowe – wskażemy w nim trojkat_i_okrag.lsp, który następnie wczytamy.

Kliknięcie przycisku Wczytaj w ZWCAD aby załadować plik LISP
Po wczytaniu funkcji w celu jej uruchomienia w linie komend wpisujemy polecenie: TROJKAT_I_OKRAG (lub jego początek).
Badanie etapów wykonywania programu
Po uruchomieniu funkcji na dole na pasku zadań zacznie migać (na żółto) przycisk edytora VISUAL LISP.

Przycisk edytora VISUAL LISP
Migający przycisk oznaczać będzie, że program LISP jest uruchomiony w ZWCAD.
My możemy przełączyć się teraz na edytor VISUAL LISP i zacząć badać po kolei etapy wykonywania programu.
W linii szóstej widzimy ustawiony przez nas punkt przerwania - oznaczyliśmy go poprzez kliknięcie po lewej stronie numeru linii. Program wykonał się do tej linii. Na szaro został oznaczony blok kodu przeznaczony w następnej kolejności do wykonania.

Klawisz F5 umożliwi wykonanie oznaczonego kolorem jasnoszarym bloku kodu
Jak widać na powyższym rysunku żadna z obserwowanych zmiennych nie ma jeszcze przypisanej wartości
(nil oznacza brak wartości).
Klikamy przycisk Continue lub wciskamy klawisz F5 aby wykonać ten blok programu.
Widoczne wartości zmiennych

Wartości zmiennych w edytorze LISP w ZWCAD
Po wykonaniu bloku kodu niektórym zmiennym zostały przypisane wartości.
Wcześniej wszystkie zmienne te miały wartość nil oznaczające nic (nil wcale nie oznacza zero, ponieważ zero też jest jakąś wartością) a następnie zostały przypisane im wartości widoczne na powyższym rysunku.
Zmienne: warstwa_dla_trojkata, warstwa_dla_okregu, entycja_trojkat, entycja_okrag dalej nie mają przypisanych wartości (czyli mają wartość nic -> nil).
Punkty przerwań programu
Oprócz wartości dla zmiennych x1, y1, x2, y2, x3, y3 zostały wykonane również linie kodu 14 i 15 w związku z czym zmienne takie jak promien_okregu i punkt_wstawienia_okregu otrzymały również swoje wartości.

Oznaczony niebieską strzałką punkt przerwania - tutaj wykonywanie programu się zatrzyma
Warto zauważyć że uprzednio zaznaczona sekcja nie dotyczyła linii 14 i 15 a pomimo tego po wciśnięciu klawisza w F5 zostały one wykonane. To dlatego że wstrzymanie wykonywania programu nastąpiło dopiero w kolejnym punkcie oznaczonym czerwoną kropką - jest to tak zwany punkt przerwania.
Punktów przerwania możemy nadawać maksymalnie po jednym do każdej linii. Służą one w kontroli nad wykonywaną sekcją programu, którą aktualnie badamy - na przykład pod kątem wartości jakie przyjmują zmienne. Punkt przerwania to taka pauza dla programu.
Punkty przerwania możemy nadawać klikając z lewej strony numeru linii i zdejmować te punkty ponownie klikając w punkt przerwania.
Kontynuujemy wykonywanie programu
Aby wykonać kolejną sekcję kodu należy ponownie wcisnąć klawisz F5 lub kliknąć w przycisk Continue.

Zmienne warstwa_dla_trojkata oraz warstwa_dla_okręgu i ich nowe wartości tekstowe
Jak widać na powyższym rysunku kolejne zmienne takie jak warstwa_dla_trojkata oraz warstwa_dla_okręgu otrzymały swoje wartości. Wcześniej zmienne te miały wartość nil (czyli nic) a teraz mają odpowiednio wartości tekstowe:
-
Warstwa dla Trojkata
-
Warstwa dla Okregu

Właściwości trójkąta (tzw. entycji) do utworzenia w rysunku
W sekcji Trójkąt określamy właściwości dla trójkąta, który zostanie utworzony.
Na powyższym rysunku widoczna jest lista par kropkowych dla okręgu (funkcja cons).
Jeśli są Państwo zainteresowani językiem LISP - jak określać właściwości obiektów za pomocą list par kropkowych opiszemy w osobnym artykule dotyczącym kodów dxf.

Wiersze 55 i 56 tworzące trójkąt i okrąg
Obiekty są rysowane w wierszach 55 oraz 56 za pomocą funkcji entmake.

entycja_trojkat – jest to 22 elementowa lista tak zwanych par kropkowych
Po wykonaniu wiersza 55 oraz 56 zmienna entycja_trojkat „otrzymała swoje wartości”.
Jest to lista 22 elementów.
Na powyższym obrazku widać jedynie 7 - poniżej są kolejne elementy aż do 22.
Wyraźnie widać że jest to lista par oddzielonych od siebie znakiem kropki – stąd nazwa pary kropkowe.
Efekt końcowy

Narysowany dzięki analizowanej funkcji LISP trójkąt oraz okrąg w ZWCAD
Powrót do góry