LISP w programie AutoCAD jest idealnym narzędziem służącym do automatyzacji pracy projektanta. Dzięki temu językowi programowania – nie martw się, wszystko zrozumiesz :) – jesteśmy w stanie przygotować proste aplikacje, dzięki którym zaoszczędzimy sobie mozolnej i powtarzalnej pracy. Zapraszam Cię na 2-odcinkowy cykl tutoriali, w którym napiszemy praktyczną aplikację LISP.
Cel
W pierwszej kolejności wyznaczmy sobie cel – jakie zadanie ma spełniać aplikacja i jakie procesy usprawniać/przyspieszać? W naszym przypadku będziemy chcieli usprawnić proces rysowania grupy drzew (dokumentacja techniczna dla terenów zieleni). Ty natomiast pomyśl o swojej branży i o tym co byś chciał usprawnić – wiedza, którą tutaj otrzymasz będzie uniwersalna. To jak ma wyglądać grupa drzew na rysunku przedstawia poniższy obraz:
Grupa drzew składa się z:
- minimum dwóch okręgów o odpowiedniej średnicy
- punktów wyznaczających pień drzewa
Co istotne okręgi grupy, które na siebie nachodzą są ucięte w miejscu łączenia:
Co będziemy potrzebować?
- Przede wszystkim musimy wiedzieć w jakich punktach użytkownik chce wstawić każde poszczególne drzewo grupy
- Musimy wiedzieć ile drzew w grupie przewiduje użytkownik aplikacji
- Musimy zapytać użytkownika o średnicę korony wstawianego drzewa
Zacznijmy pisać tego LISP’a!
Na karcie Zarządzaj w panelu Aplikacje odnajdziesz edytor Visual LISP. Po uruchomieniu utwórz nowy plik i w nim rozpocznij pisanie programu. O wszystkich szczegółach opowiadam w filmie na górze tej strony.
LISP to lista funkcji, która zawsze zawarta jest w nawiasach:
( tutaj są funkcje )
Zaraz za pierwszym nawiasem zdefiniujemy naszą pierwszą funkcję – dzięki wstawieniu „c:” będziemy mogli później wywołać program z linii poleceń AutoCADa, dokładnie tak samo jak uruchamia się zwykłe polecenia. Funkcja GDRZEW (Grupa Drzew) nie zawiera argumentów:
(DEFUN C:GDRZEW() )
Kolejny krok to definicja zmiennych, w których będziemy przechowywali różne dane – głównie pobrane od usera. Aby zdefiniować pierwszą zmienna PIEN wpisz SETQ:
(DEFUN C:GDRZEW()
(SETQ PIEN (GETPOINT "\nWskaz punkt wstawienia na rysunku: "))
)
Dzięki temu, oprócz stworzenia zmiennej, wykonamy operację przypisania wartości. A wartość dla tej zmiennej poda nam sam użytkownik ponieważ funkcja GETPOINT w AutoCAD pozwoli wskazać mu punkt w przestrzeni CAD’a. Analogicznie poprosimy użytkownika o średnicę korony:
(DEFUN C:GDRZEW()
(SETQ PIEN (GETPOINT "\nWskaz punkt wstawienia na rysunku: "))
(SETQ KORONA (GETREAL "\nPodaj srednice korony: "))
)
Tym razem jednak wykorzystamy GETREAL do uzyskania liczby rzeczywistej. W momencie gdy posiadamy te podstawowe informacje to możemy przystąpić do faktycznego narysowania okręgów i punktu. Będziemy wykorzystywać do tego funkcję COMMAND:
(DEFUN C:GDRZEW()
(SETQ PIEN (GETPOINT "\nWskaz punkt wstawienia na rysunku: "))
(SETQ KORONA (GETREAL "\nPodaj srednice korony: "))
(COMMAND "_circle" "_non" PIEN "_Diameter" KORONA)
(COMMAND "_point" PIEN)
)
Jaki widzisz po funkcji command w cudzysłowie wpisujemy polecenie, a następnie kolejne parametry, które są wymagane do realizacji polecenia (tak samo jak w AutoCADzie). W momencie gdy należy narysować punkt (_point) odwołujemy się jedynie do zmiennej PIEN, która przechowuje współrzędne punktu. W ostatnim kroku zapytamy użytkownika ile drzew chce wstawić (ILOSCD):
(DEFUN C:GDRZEW()
(SETQ ILOSCD (GETINT "\nPodaj ilosc drzew w grupie: "))
(REPEAT ILOSCD
(SETQ PIEN (GETPOINT "\nWskaz punkt wstawienia na rysunku: "))
(SETQ KORONA (GETREAL "\nPodaj srednice korony: "))
(command "_circle" "_non" PIEN "_Diameter" KORONA)
(command "_point" PIEN)
)
)
Zobacz jeszcze jedną istotną rzecz. Aby program mógł narysować więcej niż jedno drzewo musieliśmy zastosować pętlę REPEAT. Pętla ta zostanie wykonana tyle razy ile określi użytkownik (zmienna ILOSCD). Wszystkie funkcje w pętli zamykamy nawiasem.
Spróbujmy teraz użyć naszej funkcji w AutoCADzie. W edytorze wybierz Narzędzia -> Wczytaj tekst z edytora (Ctrl+Alt+E). Teraz w AutoCADzie wpisz GDRZEW. Jak widzisz program został uruchomiony i użytkownik musi podać ilość drzew w grupie. Zobacz film na górze tej strony.
Już niedługo kolejna część tego tutoriala, gdzie wykonamy kolejne elementy naszego programu.
techtutor.pl – wiedza dla każdego tutoriale, wiadomości, nauka!
