- Szczegóły
- Kategoria: Kurs LISP
Twórcom ZWCADa nie udało się dotychczas opracować środowiska programistycznego dla LISP. O ile jest mi wiadomo, prace takie trwają, niestety przewidywany czas realizacji nie jest mi znany, do czasu wydania takiego środowiska musimy więc radzić sobie ogólnie dostępnymi narzędziami. Dobra wiadomość jest taka, że wystarczy zwykły podstawowy edytor tekstu np. Notatnik. Ja używam programu Notepad++ (do pobrania poniżej) z kilku powodów:
- Kolorowanie składni. Dzięki temu łatwo jest czytać kod, wiemy co jest nazwą funkcji, a co jej parametrami. Można też w łatwy sposób sprawdzić które nawiasy są pozamykane (a to bardzo ważne a można się w tym pogubić, po kliknięciu nawiasu podświetla nam się odpowiadający mu nawias otwierający lub zamykający.
- Kolorowanie wystąpień wyrazów. Dzięki temu łatwiej jest odnaleźć te same funkcje, zmienne itp
- Autouzupełnianie. Domyślnie jest to wyłączone, ale można ustawić podpowiedzi czyli zaczynamy pisać np. nazwę funkcji, a program podpowiada resztę. Mała rzecz a cieszy, zwłaszcza, gdy trzeba napisać np. vlax-ename->vla-object.
- Makra. Istnieje możliwość nagrywania makr i przypisywania im skrótów klawiaturowych.
- Zwijanie wierszy. Przy większych plikach znalezienie np. określonej funkcji może być uciążliwe, dzięki tej opcji możemy zwinąć wiele wierszy i widoczna będzie tylko pierwsza linia.
- Program jest darmowy.
Debugowanie możemy wykonać jedynie w ZWCAD (do pobrania poniżej) przez wykonanie programu i sprawdzanie zachowania.
- Szczegóły
- Kategoria: Kurs LISP
Okienka dialogowe
W programach, nawet najprostszych nakładkach potrzebne są okienka dialogowe. W LISP okienka dialogowe można tworzyć za pośrednictwem mechanizmów DCL. DCL pozwala na tworzenie jedynie bardzo prostych okienek. Możliwe jest użycie pól tekstowych, przycisków, list, opcji, suwaków i tekstów. Wszystkie są szczegółowo opisane w helpie, więc nie będę się tu skupiał nad dokładnym opisaniem każdego elementu okienka (czasem można się spotkać z określeniem, że są to "wycinki", ja może zostanę przy określeniu "elementy" albo "kontrolki"). Chciałbym opisać zasadę działania okienek, jak zacząć pracę z nimi, kilka interesujących możliwości, które nie są oczywiste przy pierwszym spotkaniu z DCL. W poszukiwaniu szczegółów zapraszam do lektury helpa lub dyskusji na forum.
Opinie na temat DCL są ogólnie podzielone. Wielu twórców nakładek ma złe zdanie na temat DCL, ja też się ku temu zdaniu przychylam. DCL ma wiele ograniczeń, które powodują, że jeśli mam do stworzenia nakładkę z okienkami, wybieram VBA.
Kilka właściwości, które powodują, że DCL nie jest zbyt poręczy w użyciu:
- Trudności w ustawieniu kontrolek w okienku
- Brak możliwości tworzenia okienek niemodalnych
- Brak możliwości dodawania innych kontrolek
- Brak obiektowości elementów
- Brak możliwości zmian dynamicznych (w czasie działania programu])
Istnieją środowiska pozwalające na rozszerzenie możliwości DCL, jest to OpenDCL i ObjectDCL. Dają one o wiele większe możliwości, jak np.: Tworzenie okienek niemodalnych, Okienka podobne do okna właściwości, Dodatkowe konktolki jak np. zakładki, kalendarz, kontrolki obiektowe, podgląd bloków i inne. Ten kurs ma być jednak poświęcony podstawom LISP, a ja nie znam tych rozszerzeń na tyle, żeby móc doradzać którekolwiek z nich, więc nie będę się więcej wgłębiał w dodatkowe DCLe.
- Szczegóły
- Kategoria: Kurs LISP
Wskaż punkt: getpoint, getcorner
(getpoint [Punkt] [Wiadomość])
(getcorner [Punkt] [Wiadomość])
Funkcja getpoint pozwala użytkownikowi na wskazanie punktu. Może on być podany klikając myszką w punkt, lub wpisując na klawiaturze współrzędne.
Istnieje też możliwość, że wyświetlona będzie dodatkowo pomocnicza linia łącząca inny punkt z aktualnym położeniem myszki.
Ostatni parametr to podpowiedź. Jest ona wyświetlana w linii poleceń i pod wskaźnikiem myszki jeśli włączona jest opcja [DYN]
Przykłady:
getcorner Jest to funkcja podobna do getpoint z tą różnicą, że jako linię pomocniczą nie rysuje linii od punktu początkowego do wskaźnika myszki, a prostokąt, gdzie punkty początkowy i wskaźnik myszki są narożnikami tymczasowego prostokąta.
Podaj liczbę - getreal, getint, getdist
(getreal [Wiadomość])
(getint [Wiadomość])
(getdist [Wiadomość])
Czytaj więcej: Kurs LISP część 5 - Interakcja z użytkownikiem, zbiory wskazań
- Szczegóły
- Kategoria: Kurs LISP
Przykład 1
Koniec tego teoretyzowania :-). W tej "lekcji" zrobimy coś praktycznego. Przykład, którym się posłużę, będzie prosił użytkownika o wskazanie punktu, a następnie w miejscu wskazanym wstawiony zostanie krzyżyk opisujący współrzędne, X i Y.
Kod rysujący taki znaczek wyglądałby następująco:
- Szczegóły
- Kategoria: Kurs LISP
Instrukcje warunkowe
if
If to podstawowa instrukcja warunkowa. Służy do podejmowania decyzji np. wykonywania kodu po zaistnieniu określonych warunków. Jej konstrukcja jest następująca
(polecenie1)
(polecenie2)
)
Jeśli warunek jest spełniony wykonywane jest polecenie1. Jeśli natomiast warunek nie jest spełniony, wykonywane jest polecenie2 Więcej o samych warunkach na końcu tej części
(if (> SelDist 10)
(progn
(print "Wartość jest większa niż progowa")
(setq OutVal SelDist )
)
(progn
(print "Wskazałeś wartość mniejszą nież progowa")
(setq OutVal 0)
)
)
(print OutVal)
Czytaj więcej: Kurs LISP część 4 - Instrukcje warunkowe i pętle