lisp 2

background image

3/![bojn!{bd{ojfnz!qsphsbnpxb

44

Zanim zaczn

ę omawiać na poszczególnych przykładach podstawy języka AutoLISP,

chciałbym w paru punktach poda

ć jeszcze trochę teorii, która mam nadzieję, będzie

pomocna przy pisaniu Twoich własnych programów w AutoLISPie.

Wszystkie programy w AutoLISPie s

ą plikami tekstowymi, które ładujemy do interpre-

tera AutoLISPu funkcj

ą load. Podczas ładowania programu następuje jego weryfikacja

od strony leksykalnej, natomiast podczas wykonywania programu nast

ępuje jego wery-

fikacja od strony formalnej. Poniewa

ż w pierwszym okresie programowania w Auto-

LISPie prawie ka

żdy program będzie zawierał mniejszą lub większą ilość błędów,

Twoja praca b

ędzie polegać przede wszystkim na wczytywaniu, uruchamianiu i popra-

wianiu bł

ędów w kodzie źródłowym programu. Dlatego też chcę pokazać Ci, jak

z poziomu programu AutoCAD mo

żna wywołać edytor tekstu.

Pomocny oka

że się tutaj zbiór ACAD.PGP (programm parameters file — plik para-

metrów wywołania programów). Zbiór ACAD.PGP powinien si

ę znajdować w katalogu

głównym AutoCADa — je

śli go tam nie ma, należy go utworzyć dowolnym edytorem

ASCII.

background image

45

BvupMJTQ!—!qsbluzd{oz!lvst

Plik parametrów wywołania programów ACAD.PGP jest plikiem tekstowym, zawiera-
j

ącym definicje poleceń AutoCADa. Plik ten podzielono na dwie sekcje: w sekcji pier-

wszej zdefiniowano sposoby działania programu w przypadku wywoływania polece

ń

zewn

ętrznych, natomiast sekcja druga dotyczy tworzenia skrótów nazw poleceń stan-

dardowych. Plik ACAD.PGP mo

że również zawierać komentarze. Komentarz jest tek-

stem informacyjnym, poprzedzonym

średnikiem (;).

My zajmiemy si

ę tutaj sekcją pierwszą — sekcją poleceń zewnętrznych.

Ka

żda linia pliku ACAD.PGP, dotycząca polecenia zewnętrznego, posiada pięć pól.

Pola te s

ą od siebie oddzielone przecinkami, nawet jeżeli są puste. W kolejnych polach

wyst

ępują:

3/2/2/!Ob{xb!qp

3/2/2/!Ob{xb!qp

3/2/2/!Ob{xb!qp

3/2/2/!Ob{xb!qpmfdfojb

mfdfojb

mfdfojb

mfdfojb

Dodane polecenie zewn

ętrzne AutoCADa. Jest to polecenie podawane w odpowiedzi na

zgłoszenie Command: (Polecenie:), wyst

ępujące w linii poleceń AutoCADa. Nie może

ono pokrywa

ć się z nazwą polecenia wewnętrznego, gdyż w takim przypadku polecenie

zewn

ętrzne będzie ignorowane. Nazwa może zawierać litery duże i małe.

3/2/3/!Qpmfdfojf!

3/2/3/!Qpmfdfojf!

3/2/3/!Qpmfdfojf!

3/2/3/!Qpmfdfojf!TP!)tztufn

TP!)tztufn

TP!)tztufn

TP!)tztufnv!pqfsbdz

v!pqfsbdz

v!pqfsbdz

v!pqfsbdzkofhp*

kofhp*

kofhp*

kofhp*

Pole zawiera ła

ńcuch tekstowy wysyłany do systemu operacyjnego po wywołaniu pole-

cenia zewn

ętrznego AutoCADa. Może to być każde polecenie dopuszczalne w danym

systemie operacyjnym, równie

ż polecenie wewnętrzne systemu takie, jak dir czy set.

Ła

ńcuch może zawierać przełączniki, parametry itd.

3/2/

3/2/

3/2/

3/2/4/!Pct{bs!{xb

4/!Pct{bs!{xb

4/!Pct{bs!{xb

4/!Pct{bs!{xbmojbofk!qbnj

mojbofk!qbnj

mojbofk!qbnj

mojbofk!qbnjdj

dj

dj

dj

Pole to słu

ży do zapewnienia kompatybilności z poprzednimi wersjami AutoCADa

i, mimo

że AutoCAD nie korzysta z danych zawartych w tym polu, musi być ono obecne

i zwykle przypisuje mu si

ę wartość 0.

3/2/5/![h"p

3/2/5/![h"p

3/2/5/![h"p

3/2/5/![h"pt{fojf

t{fojf

t{fojf

t{fojf

W polu tym umieszcza si

ę łańcuch tekstowy, wyświetlany po wywołaniu polecenia

w systemie operacyjnym. Odpowied

ź na to zgłoszenie jest dołączana do łańcucha

wyst

ępującego w polu drugim (nazwa polecenia w systemie operacyjnym) lub podaje

nazw

ę bloku, gdy kod powrotu ma przypisaną wartość 1. Jeśli pierwszy znak w polu

jest gwiazdk

ą (*), wtedy odpowiedź może zawierać spacje i musi zostać potwierdzona

klawiszem ENTER. Gdy gwiazdka nie wyst

ępuje, odpowiedź można zakończyć bądź

spacj

ą, bądź klawiszem ENTER. W przypadku rezygnacji ze zgłoszenia, pole zawiera

ła

ńcuch pusty ("").

background image

3/![bojn!{bd{ojfnz!qsphsbnpxb

46

3/2/6/!L

3/2/6/!L

3/2/6/!L

3/2/6/!Lpe!qpxspuv

pe!qpxspuv

pe!qpxspuv

pe!qpxspuv

Jest to pole zawieraj

ące opcjonalny parametr w postaci liczby całkowitej, odpowia-

daj

ącej sumie wartości poszczególnych bitów, np. jeśli użytkownik chce osiągnąć tryby

pracy zgodne z warto

ściami 1, 2 i 4, do pola wprowadza wartość 7. Poszczególne

warto

ści mają następujące przypisania:

0 — powrót do ekranu tekstowego,

1 — wczytaj plik DXB,

2 — utwórz blok z pliku DXB,

4 — powrót do poprzedniego ekranu.

Z powy

ższych kodów interesującymi nas wartościami są 0 lub 4. AutoCAD ignoruje w pliku

ACAD.PGP wszystkie linie puste i wszystkie teksty le

żące na prawo od średnika.

Poniewa

ż moim ulubionym edytorem jest Norton Edytor 2.0, tak więc dopisałem nastę-

puj

ącą linię w pliku ACAD.PGP:

NE,C:\NC\NE,0,Zbior do edycji: ,4

W ten sposób mam nast

ępujące możliwości edycji plików z programami lispowymi:

Command: ne

↵↵

Zbior do edycji: demo1.lsp

↵↵

Powy

ższa sekwencja wywołuje edytor Nortona z jednoczesnym wczytaniem zbioru

DEMO1.LSP, a w przypadku, gdy zbiór DEMO1.LSP nie istnieje w bie

żącym katalogu,

utworzenie pustego zbioru DEMO1.LSP w celu napisania w nim np. nowej funkcji.

Command: ne

↵↵

Zbior do edycji: c:\users\marek\lisp\demo1.lsp

↵↵

Powy

ższa sekwencja wywołuje edytor Nortona z jednoczesnym wczytaniem zbioru

DEMO1.LSP, znajduj

ącego się w katalogu C:\USERS\MAREK\LISP, a w przypadku, gdy

zbiór DEMO1.LSP nie istnieje w tym katalogu, utworzenie nowego zbioru DEMO1.LSP
w podanym katalogu.

Command: ne

↵↵

Zbior do edycji:

↵↵

Powy

ższa sekwencja (naciśnięcie samego ENTER w odpowiedzi na nazwę zbioru do

edycji) wywołuje edytor Nortona bez wczytywania jakiegokolwiek zbioru. Zbiór do
edycji mo

żna wybrać wywołując opcję FILE => OPEN..., która wyświetla okno dialo-

gowe katalogów i zbiorów, z których w łatwy sposób mo

żna wybrać żądany zbiór.

Command: ne

↵↵

Zbior do edycji: <Ctrl-C>

background image

47

BvupMJTQ!—!qsbluzd{oz!lvst

Powy

ższa sekwencja przerywa komendę zewnętrzną — następuje powrót do AutoCADa

bez uruchamiania edytora. Sekwencja powy

ższa może być przydatna w przypadku

pomyłkowego wywołania edytora Nortona.

Na koniec tego punktu chciałbym jeszcze wymieni

ć kilka najważniejszych zalet pro-

gramu Norton Edytor 2.0. Zalety te to:

1. Stosowanie menu rozwijanych, poprzez które mo

żliwy jest dostęp do większości

funkcji programu.

2. Mo

żliwość współpracy z myszą.

3. Mo

żliwość pracy z bardzo długimi dokumentami.

4. Mo

żliwość pracy jednocześnie z dwoma dokumentami, w dwóch oknach edycji.

5. Istnienie operacji blokowych umo

żliwiających przenoszenie bloków tekstu

w obr

ębie jednego bądź dwóch dokumentów.

6. Mo

żliwość sprawdzania w tekście dokumentu poprawnej ilości nawiasów

prawych i lewych ka

żdego rodzaju. Z funkcji tej będą korzystać w pierwszej

kolejno

ści użytkownicy piszący programy komputerowe.

7. Mo

żliwość wydrukowania z poziomu edytora całego dokumentu lub zaznaczo-

nego bloku — mamy tym samym mo

żliwość wydrukowania kodu interesującej

nas funkcji bez drukowania całego programu.

Cennymi wła

ściwościami ułatwiającymi redagowanie tekstu są możliwości skonfigu-

rowania edytora tak, aby:

1. Marginesy ustawiane były automatycznie, zgodnie z wybran

ą wcześniej ich

długo

ścią.

2. Słowa wychodz

ące poza zadeklarowaną długość linii były przenoszone automa-

tycznie do nast

ępnej linii.

3. Wci

ęcia linii tekstowych były ustawiane automatycznie przy przechodzeniu do

linii nast

ępnej.

Istnieje te

ż możliwość automatycznego formatowania paragrafu bądź całego doku-

mentu, półautomatycznego wprowadzania znaków łamania stron lub ich usuwania oraz
ustawiania wielko

ści marginesów na stronie drukowanej. Z możliwości tych nie należy

jednak korzysta

ć podczas pisania kodów źródłowych programów, gdyż interpreter

AutoLISPu wymaga czystego kodu ASCII (tzn. bez kodów formatuj

ących dokument).

background image

3/![bojn!{bd{ojfnz!qsphsbnpxb

48

W punkcie tym zostanie podanych kilka najwa

żniejszych uwag, które — mam nadzieję

— pomog

ą Ci zminimalizować ilość błędów podczas pisania Twoich pierwszych pro-

gramów w AutoLISPie.

A oto najwa

żniejsze zasady:

1. W pliku z kodem

źródłowym programu oddzielaj od siebie poszczególne fun-

kcje, na przykład:

;========================================
;
(defun FUNKCJA_1 ()

(progn

ciało_funkcji

);progn

);FUNKCJA_1
;
;========================================
;
(defun FUNKCJA_2 ()

(progn

ciało_funkcji

);progn

);FUNKCJA_2
;
;========================================

2. Stosuj wci

ęcia w kodzie źródłowym programu. Tak rozplanuj swój kod, że im

bardziej zagnie

żdżona jest dana linia kodu, tym dalej odsunięta jest od lewego

marginesu. W swoich programach stosuj

ę wcięcia co dwie kolumny, np.

(defun FUNKCJA_1 ()

(progn

(setq

x1 (getint "\nPodaj liczbe : ")
x2 (* x1 2)

);setq
(princ

(strcat

"\nLiczba x2 = "
(rtos x2 2 0)

);strcat

);princ

);progn

);FUNKCJA_1

background image

49

BvupMJTQ!—!qsbluzd{oz!lvst

3. Kiedy jest to mo

żliwe, stosuj grupowanie komend. Staraj się również nie

umieszcza

ć więcej niż jednej instrukcji w jednej linii, np.

(setq x1 1 x2 "string" x3 (list 1 2 3))

rozbij na:

(setq

x1 1
x2 "string"
x3 (list 1 2 3)

);setq

4. Opatruj komentarzem nawias zamykaj

ący instrukcji, np.

(setq

.....
.....

);setq

(command

.....
.....

);command

5. Korzystaj z komentarzy w kodzie

źródłowym programu. Obfite komentowanie

kodu

źródłowego podczas pisania programów jest pracą, która sowicie się

opłaca. Komentarze te b

ędą przydatne dla Ciebie jak również i dla przyszłego

u

żytkownika Twoich programów, który może być zmuszony do dostosowania

programu do własnych potrzeb przez zmian

ę części jego kodu. Komentarze

mog

ą być wykorzystywane na przykład w następujących celach:

do nadawania tytułów, podawania autora lub daty utworzenia funkcji lub
programu,

podawania instrukcji u

żytkowania programu,

podawania uwag obja

śniających wewnątrz kodu funkcji,

umieszczania osobistych notatek podczas uruchamiania programu,

wstawiania znaków poprawiaj

ących estetykę programu.

6. Korzystaj z funkcji edytora do wyszukiwania odpowiadaj

ących sobie nawiasów

otwieraj

ących i zamykających — sprawdzaj zawsze, czy nawiasowi otwiera-

j

ącemu funkcji odpowiada nawias zamykający. Jeśli Twój edytor nie ma opcji

wyszukiwania nawiasów — najwy

ższy czas wymienić go na inny.

7. Po napisaniu kodu funkcji przetestuj j

ą natychmiast, zanim zaczniesz pisać

nast

ępne funkcje.

background image

3/![bojn!{bd{ojfnz!qsphsbnpxb

4:

Jak ju

ż wspomniałem wcześniej, programy w AutoLISPie zapisywane są w plikach

tekstowych w formacie ASCII. Aby skorzysta

ć z danego programu, należy go najpierw

załadowa

ć do interpretera AutoLISPu a następnie uruchomić. Poniżej, w poszcze-

gólnych punktach, podane zostan

ą metody ładowania i uruchamiania programów

w AutoLISPie.

3/

3/

3/

3/4/2/

4/2/

4/2/

4/2/ Joufsbld

Joufsbld

Joufsbld

Joufsbldzkof!"bep

zkof!"bep

zkof!"bep

zkof!"bepxbojf!qsp

xbojf!qsp

xbojf!qsp

xbojf!qsphsbn(x

hsbn(x

hsbn(x

hsbn(x

x!B

x!B

x!B

x!BvupMJTQjf

vupMJTQjf

vupMJTQjf

vupMJTQjf

W metodzie tej, wpisujemy z klawiatury nazw

ę żądanego programu. Nazwa ta jest

argumentem standardowej funkcji AutoLISPu load, przeznaczonej do ładowania
programów w AutoLISPie.

Format funkcji load jest nast

ępujący:

(load

filename [onfailure])

Argument filename jest ła

ńcuchem alfanumerycznym (wartość typu string), króry repre-

zentuje nazw

ę pliku bez rozszerzenia (domyślnie zakładane jest rozszerzenie .LSP).

Je

żeli rozszerzenie pliku jest inne niż .LSP, należy je podać razem z nazwą pliku, na

przykład TEST.DAT. Ponadto filename mo

że zawierać przedrostek określający ścieżkę

dost

ępu, na przykład:

"c:/acad12/users/marek/kombajn"

lub

"c:\\acad12\\users\\marek\\kombajn".

Je

śli nie podasz w argumencie filename ścieżki dostępu do pliku, to funkcja load prze-

szukuje

ścieżkę biblioteczną AutoCADa w następującej kolejności:

katalog bie

żący,

katalog zawieraj

ący plik bieżącego rysunku,

katalogi okre

ślone przez zmienną środowiskową ACAD,

katalog zawieraj

ący pliki programu AutoCAD.

Je

śli argument filename zawiera ścieżkę dostępu, to funkcja load szuka pliku tylko na

tej

ścieżce. Jeżeli na tej ścieżce/ścieżkach zostanie znaleziony podany plik, to jest on

wczytywany do pami

ęci. Jeśli operacja ładowania zakończy się sukcesem, load zwraca

warto

ść ostatniego wyrażenia w pliku, które często jest nazwą ostatniej zdefiniowanej

background image

51

BvupMJTQ!—!qsbluzd{oz!lvst

w pliku funkcji. Je

żeli operacja load zakończyła się porażką, zostaje wyświetlony odpo-

wiedni komunikat o bł

ędzie. Jeżeli jednak funkcja load zawiera opcjonalny argument

onfailure (je

śli_błąd), to funkcja zwraca wartość tego argumentu. Mamy wówczas

mo

żliwość wypisania własnego komunikatu o błędzie.

Zakładaj

ąc przykładowo, że plik C:/ACAD12/USERS/MAREK/TEST1.LSP zawiera

dwie definicje funkcji:

;====================
(defun FUNKCJA_1 ()

(progn

ciało_funkcji

);progn

);FUNKCJA_1
;====================
(defun FUNKCJA_2 ()

(progn

ciało_funkcji

);progn

);FUNKCJA_2
;====================

oraz,

że plik TEST2.LSP nie istnieje, a zmienna środowiskowa ACAD zawiera katalog

C:/ACAD12/USERS/MAREK, otrzymamy nast

ępujące wyniki wywołania funkcji load:

Command: (load "c:/acad12/users/marek/test1")

↵↵

FUNKCJA_2
Command:

Powy

ższe wyrażenie powoduje przeszukanie katalogu C:/ACAD12/USERS/MAREK

w poszukiwaniu pliku TEST1.LSP. Poniewa

ż plik ten istnieje w podanym katalogu,

zostaje on załadowany oraz zostaje zwrócona warto

ść ostatniego wyrażenia w pliku —

FUNKCJA_2.

Command: (load "c:\\acad12\\users\\marek\\test1")

↵↵

FUNKCJA_2
Command:

Jest to przykład podobny do poprzedniego z t

ą różnicą, że ścieżka dostępu do pliku

podana została w inny sposób.

Command: (load "test1")

↵↵

FUNKCJA_2
Command:

Powy

ższe wyrażenie powoduje przeszukanie ścieżki bibliotecznej AutoCADa, w poszu-

kiwaniu pliku TEST1.LSP. Poniewa

ż plik ten znajduje się w katalogu C:/ACAD12/

USERS/MAREK, a parametr ten został umieszczony w zmiennej

środowiskowej ACAD,

plik zostaje załadowany oraz zostaje zwrócona warto

ść ostatniego wyrażenia

w pliku — FUNKCJA_2.

Command: (load "test1" "\nPlik TEST1.LSP nie zostal

wczytany.")

↵↵

background image

3/![bojn!{bd{ojfnz!qsphsbnpxb

52

FUNKCJA_2
Command:

W powy

ższym wyrażeniu argument onfailure = "\nPlik TEST1.LSP nie zostal

wczytany." nie jest wykorzystany przez funkcj

ę load, bowiem plik TEST1.LSP został

znaleziony na

ścieżce bibliotecznej AutoCADa oraz podczas jego wczytywania nie

wykryto bł

ędów.

Command: (load "test2" "\nPlik TEST2.LSP nie zostal

wczytany.")

↵↵

Plik TEST2.LSP nie zostal wczytany.
Command:

Powy

ższe wyrażenie powoduje przeszukanie ścieżki bibliotecznej AutoCADa, w poszu-

kiwaniu pliku TEST2.LSP. Poniewa

ż plik ten nie istnieje, funkcja load zwraca wartość

argumentu onfailure = "\nPlik TEST2.LSP nie zostal wczytany.".

Command: (load "test2")

↵↵

Can't open "test2.lsp" for input
error: LOAD failed
(LOAD "test2")
*Cancel*
Command:

Powy

ższe wyrażenie powoduje przeszukanie ścieżki bibliotecznej AutoCADa, w poszu-

kiwaniu pliku TEST2.LSP. Poniewa

ż plik ten nie istnieje oraz nie został zdefiniowany

opcjonalny argument onfailure, funkcja load powoduje wypisanie standardowego bł

ędu

AutoLISPu.

Funkcja load mo

ż

e by

ć

u

ż

yta wewn

ą

trz innej funkcji AutoLISPu, a nawet

rekurencyjnie (we wczytywanym pliku).

3

3

3

3/4/3/!+bepxb

/4/3/!+bepxb

/4/3/!+bepxb

/4/3/!+bepxbojf!qsphsbn

ojf!qsphsbn

ojf!qsphsbn

ojf!qsphsbn(x!x!BvupMJ

(x!x!BvupMJ

(x!x!BvupMJ

(x!x!BvupMJTQjf

TQjf

TQjf

TQjf

{b!qp

{b!qp

{b!qp

{b!qpnpd,!qmjlv!

npd,!qmjlv!

npd,!qmjlv!

npd,!qmjlv!BDBE/MTQ

BDBE/MTQ

BDBE/MTQ

BDBE/MTQ

Plik ACAD.LSP pozwala na wczytanie biblioteki programów, napisanych w Auto-
LISPie, przy ka

żdym uruchamianiu AutoCADa lub rozpoczynaniu nowego rysunku.

Plik ACAD.LSP mo

że zawierać kod AutoLISPu dla jednej lub większej liczby funkcji

lub, po prostu, szereg wywoła

ń funkcji load. Zalecam użycie tego drugiego sposobu

post

ępowania, gdyż pozwala on na łatwiejsze przeprowadzenie ewentualnych mody-

fikacji zawarto

ści biblioteki.

Gdy w pliku ACAD.LSP umie

ścimy następujące linie:

(load "ddtype")
(load "edge")
(load "mvsetup")

background image

53

BvupMJTQ!—!qsbluzd{oz!lvst

przy ka

żdym uruchamianiu AutoCADa lub rozpoczynaniu nowego rysunku automa-

tycznie b

ędą wczytywane pliki: DDTYPE.LSP, EDGE.LSP oraz MVSETUP.LSP.

Gdy w pliku ACAD.LSP umie

ścimy następującą linię:

(defun c:k ()(load "kombajn"))

wtedy wpisuj

ąc literę k (lub K) w odpowiedzi na polecenie AutoCADa Command:,

spowodujemy załadowanie pliku KOMBAJN.LSP.

Je

śli podczas wczytywania pliku ACAD.LSP zostanie wykryty błąd, pozostała część

pliku jest ignorowana i nie zostaje wczytana. W takim przypadku pomocne mo

że

okaza

ć się użycie w funkcji load opcjonalnego argumentu onfailure (jeśli_błąd).

Plik ACAD.LSP mo

że wtedy wyglądać następująco:

(princ (load "ddtype" "\nPlik DDTYPE.LSP nie zostal
wczytany."))
(princ (load "edge" "\nPlik EDGE.LSP nie zostal wczytany."))
(princ (load "mvsetup" "\nPlik MVSETUP.LSP nie zostal
wczytany."))
(princ)

Je

śli wywołanie funkcji load kończy się pozytywnie, zwracana jest wartość ostatniego

wyra

żenia w pliku (zwykle nazwa ostatniej funkcji zdefiniowanej w pliku lub komu-

nikat dotycz

ący sposobu użycia funkcji). W przypadku wykrycia błędu, zwracana jest

warto

ść opcjonalnego argumentu onfailure. W powyższym przykładzie, wartość zwra-

cana przez funkcj

ę load została podstawiona jako argument funkcji princ, co spowo-

duje, w razie pojawienia si

ę błędu, wyświetlenie odpowiedniego komunikatu w linii

polece

ń AutoCADa. Na przykład, jeśli zostanie wykryty błąd podczas wczytywania

pliku DDTYPE.LSP, funkcja princ wy

świetli komunikat:

Plik DDTYPE.LSP nie zostal wczytany.

i AutoCAD b

ędzie kontynuował wczytywanie dwóch następnych plików.

Plik ACAD.LSP mo

że również zawierać komentarze. Komentarz jest tekstem informa-

cyjnym, poprzedzonym

średnikiem ";".

Plik

ACAD.LSP poszukiwany jest w pierwszej kolejno

ś

ci w katalogu bie

żą

cym.

Oznacza to,

ż

e masz mo

ż

liwo

ść

tworzenia wielu plików

ACAD.LSP, znajdu-

j

ą

cych si

ę

w ró

ż

nych katalogach i obsługuj

ą

cych aplikacje tam umieszczone.

W pliku

ACAD.LSP nie nale

ż

y umieszcza

ć

wywoła

ń

funkcji command, ani

ż

adnych innych funkcji posiadaj

ą

cych bezpo

ś

redni dost

ę

p do rysunkowej bazy

danych. Na etapie wczytywania pliku

ACAD.LSP rysunek nie jest jeszcze

w pełni zainicjowany, tak

ż

e mog

ą

wyst

ą

pi

ć

nieprzewidziane zachowania

systemu. Aby osi

ą

gn

ąć

efekt automatycznego wykonywania ci

ą

gu wywoła

ń

funkcji command po wczytaniu rysunku, nale

ż

y umie

ś

ci

ć

je w definicji defun

specjalnej funkcji S::STARTUP.

background image

3/![bojn!{bd{ojfnz!qsphsbnpxb

54

3/4/4/!+bepxb

3/4/4/!+bepxb

3/4/4/!+bepxb

3/4/4/!+bepxbojf!qsphsbn

ojf!qsphsbn

ojf!qsphsbn

ojf!qsphsbn(x!x!BvupMJ

(x!x!BvupMJ

(x!x!BvupMJ

(x!x!BvupMJTQjf

TQjf

TQjf

TQjf

{b!qp

{b!qp

{b!qp

{b!qpnpd,!plob!e

npd,!plob!e

npd,!plob!e

npd,!plob!ejbmphpxfhp

jbmphpxfhp

jbmphpxfhp

jbmphpxfhp

M

M

M

MPBE!BVUP

PBE!BVUP

PBE!BVUP

PBE!BVUPMJTQ!BOE!BET!

MJTQ!BOE!BET!

MJTQ!BOE!BET!

MJTQ!BOE!BET!GJMFT

GJMFT

GJMFT

GJMFT

Okno dialogowe Load AutoLISP and ADS Files (Wczytywanie plików AutoLISP
i ADS) pozwala Ci zarz

ądzać Twoimi ulubionymi programami. Daje ono możliwość

łatwego odnajdowania i wybierania programów u

żytkowych. Po zlokalizowaniu pliku,

staje si

ę on częścią listy Files to Load (Pliki do wczytania). Dzięki temu nie będziesz go

musiał szuka

ć za każdym razem, gdy jest potrzebny. Nawet po opuszczeniu AutoCADa

lista wybranych plików zostaje zachowana w pliku dyskowym APPLOAD.DFS.

Okno dialogowe Load AutoLISP and ADS Files wywołujemy z menu górnego [File] —
[Applications...] ([Pliki] — [Aplikacje...]) lub wpisujemy z klawiatury APPLOAD.

Poszczególne opcje okna dialogowego oznaczaj

ą:

File... (Plik...)

Dodaje aplikacj

ę do listy. Wyświetlone zostaje okno dialogowe (podobne jak w komen-

dzie OPEN (OTWÓRZ)) i program oczekuje na wskazanie pliku aplikacji. Nazwa apli-
kacji i

ścieżka dostępu zostaje umieszczona na liście w oknie dialogowym.

Remove (Usu

ń z listy)

Usuwa wskazane aplikacje z listy.

Save List (Zapisz List

ę)

Zaznaczenie przeł

ącznika spowoduje automatyczny zapis na dysku utworzonej listy

aplikacji w momencie opuszczenia okna dialogowego przyciskiem Load, Unload lub
Exit.

background image

55

BvupMJTQ!—!qsbluzd{oz!lvst

Load (Wczytaj)

Wczytuje aplikacje wskazane w oknie kartotekowym Files to Load.

Unload (Usu

ń)

Usuwa z pami

ęci aplikacje ADS.

Exit (Koniec)

Opuszcza okno dialogowe.

Help... (Pomoc...)

Wy

świetla standardowe okno pomocy AutoCADa z opisem komendy APPLOAD.

3/4/5/!G

3/4/5/!G

3/4/5/!G

3/4/5/!Gvoldkb!T;;TU

voldkb!T;;TU

voldkb!T;;TU

voldkb!T;;TUBSUVQ

BSUVQ

BSUVQ

BSUVQ

Gdy omawiałem zastosowanie pliku ACAD.LSP, wspomniałem,

że aby osiągnąć efekt

automatycznego wykonywania ci

ągu wywołań funkcji command po wczytaniu

rysunku, nale

ży umieścić je w definicji defun specjalnej funkcji S::STARTUP. Jeżeli

funkcja ta jest umieszczona w pliku ACAD.LSP, to zostanie ona automatycznie
wywołana (bez

żadnych argumentów) przy każdym wczytaniu istniejącego rysunku lub

utworzeniu nowego. Dlatego utworzon

ą przy pomocy defun definicję funkcji

S::STARTUP mo

żna umieścić w pliku ACAD.LSP tak, aby zawsze, na początku sesji

edycyjnej wykonywana była sekwencja okre

ślonych czynności wstępnych. Użycie

funkcji S::STARTUP przeanalizujemy na nast

ępujących przykładach.

Qs{zlbe!2

Poni

ższa zawartość pliku ACAD1.LSP spowoduje utworzenie warstw 1 i 2, nadanie

warstwie 1 koloru czerwonego, warstwie 2 koloru niebieskiego, narysowanie na
warstwie 1 okr

ęgu o środku w punkcie (6,4.5) i promieniu 2, narysowanie na warstwie 2

trójk

ąta o wierzchołkach (2,2), (6,7), (10,2) oraz ustalenie warstwy 0 jako warstwy

bie

żącej.

;=================================================ACAD1.LSP
;test funkcji S::STARTUP - wersja 1
;
(defun S::STARTUP ()

(progn

(princ "\nRozpoczecie wykonywania funkcji startowej.")

(command

"_zoom" "_window" "0,0" "12,9"

"_layer"

"_new" "1,2"

"_color" "1" "1"

"_color" 5 2

""

"_layer" "_set" "1" ""

"_circle" (list 6 4.5) 2

background image

3/![bojn!{bd{ojfnz!qsphsbnpxb

56

"_layer" "_set" "2" ""

"_line" "2,2" '(6 7) (list 10 2) "_c"

"_layer" "_set" "0" ""

);command
(princ "\nZakonczenie wykonywania funkcji startowej.")
(princ)

);progn

);S::STARTUP
;
;=================================================KONIEC

Omówmy teraz wyró

żnione linie programu:

Rozpoczynamy ciąg wywołań funkcji command.

Funkcja command posiada format:

(command

[arguments]...)

i słu

ży do wywołania poleceń AutoCADa z programu napisanego w języku

AutoLISP. Argumentami funkcji command s

ą polecenia programu AutoCAD

i ich opcje. Argumenty te mog

ą mieć postać łańcuchów alfanumerycznych, liczb

typu real i integer oraz punktów, zale

żnie od tego, czego oczekuje wykonywana

wła

śnie funkcja AutoCADa.

Wywołujemy standardowe polecenie AutoCADa LAYER (WARSTWA). Znak

podkre

ślenia "_" przed nazwą komendy umożliwia jej rozpoznanie w naro-

dowych wersjach AutoCADa.

Tak wi

ęc sekwencja:

(command "_layer" ...)

jest równowa

żna sekwencji:

(command "warstwa" ...)

Obsługa j

ę

zyków narodowych została wprowadzona od wersji 12 programu

AutoCAD. We wcze

ś

niejszych wersjach AutoCADa komenda "_layer" nie

zostanie rozpoznana (dotyczy to tak wersji angielskiej jak i wersji narodowych).

Będąc w dalszym ciągu w trakcie wykonywania komendy LAYER, tworzymy

dwie nowe warstwy — 1 i 2. Nazwy warstw oddzielone s

ą od siebie przecinkami

i umieszczone w jednym ła

ńcuchu.

Przyporządkowujemy kolor "1" (czerwony) do warstwy "1". Zarówno numer

koloru jak i nazwa warstwy podane s

ą jako łańcuchy alfanumeryczne.

Przyporządkowujemy kolor 5 (niebieski) do warstwy 2. Zarówno numer koloru

jak i nazwa warstwy podane s

ą jako liczby całkowite.

Kończymy wykonywanie komendy LAYER. Podwójny cudzysłów rozumiany

jest przez AutoLISP jako naci

śnięcie klawisza ENTER.

Wywołujemy nową komendę LAYER i powodujemy ustalenie warstwy 1 jako

warstwy aktualnej.

Wywołujemy komendę CIRCLE, rysującą okrąg.

background image

57

BvupMJTQ!—!qsbluzd{oz!lvst

Ustalamy warstwę 2 jako aktualną.
Wywołujemy komendę LINE i rysujemy trójkąt złożony z trzech linii.

Zaprezentowane tutaj zostały trzy sposoby podawania współrz

ę

dnych punktu.

Dwa pierwsze z nich, tj. "2,2" '(6 7) s

ą

to współrz

ę

dne punktu podane w sposób

jawny (nie mo

ż

e tu wyst

ą

pi

ć

wyra

ż

enie AutoLISPu). W sposobie trzecim, tj. (list

10 2) mo

ż

emy u

ż

y

ć

wyra

ż

e

ń

AutoLISPu, np.:

(setq

x 10
y 1
punkt (list x (+ y 1))

);setq

Zauwa

ż

,

ż

e utworzono tylko 2 boki trójk

ą

ta. Narysowanie trzeciego boku

wymusza opcja "_c" (CLOSE — ZAMKNIJ) komendy LAYER, która powoduje
zamkni

ę

cie narysowanej figury.

Aby uruchomi

ć plik ACAD1.LSP, wykonaj jedną z następujących czynności:

dodaj zawarto

ść pliku ACAD1.LSP do Twojego pliku ACAD.LSP (najlepiej na

ko

ńcu pliku ACAD.LSP) — pod warunkiem, że funkcja S::STARTUP nie była

wcze

śniej zdefiniowana w pliku ACAD.LSP,

przekopiuj plik ACAD1.LSP na ACAD.LSP — pod warunkiem,

że w bieżącym

katalogu nie ma jeszcze pliku ACAD.LSP — inaczej jego zawarto

ść zostanie

skasowana.

Je

śli interesuje Cię, co się stanie, gdy instrukcje z pliku ACAD1.LSP nie byłyby częścią

funkcji S::STARTUP, we

ź w komentarz definicję funkcji, nie zapominając o odpowia-

daj

ącym jej nawiasie zamykającym — linie wzięte w komentarz zaznaczone są tłustym

drukiem, opu

ść program AutoCAD i wywołaj go ponownie lub wywołaj nowy rysunek

(aby wczyta

ć ponownie plik ACAD.LSP => ACAD1.LSP).

;(defun S::STARTUP ()

(progn

ciało_funkcji

);progn

;);S::STARTUP

Qs{zlbe!3

W przykładzie 1 pokazałem sposoby podawania współrz

ędnych punktu. Położenie

ka

żdego punktu na płaszczyźnie można określić za pomocą układu współrzędnych

prostok

ątnych (kartezjańskich) lub układu współrzędnych biegunowych. Każdy rodzaj

współrz

ędnych może być zapisany w formie współrzędnych bezwzględnych lub

w formie współrz

ędnych względnych (poprzedzonych znakiem @).

background image

3/![bojn!{bd{ojfnz!qsphsbnpxb

58

Współrz

ędne bezwzględne odnoszą się do początku układu współrzędnych, współ-

rz

ędne względne — do ostatnio wskazanego punktu. Jeżeli chcesz, aby wprowadzone

współrz

ędne odniesione były do Globalnego Układu Współrzędnych raczej niż do

układu bie

żącego to poprzedź je znakiem *. Jeżeli znaki @ i * występują razem to znak

@ powinien wyst

ępować przed *.

Poni

ższy przykład pokazuje kolejne sposoby podawania współrzędnych punktów .

;*************************************************ACAD2.LSP
;Test funkcji S::STARTUP - wersja 2
;
;Podawanie wspolrzednych punktow w ukladzie
;bezwzglednym, wzglednym oraz biegunowym.
;
;=================================================
;Funkcja zatrzymujaca realizacje programu,
;dopoki uzytkownik nie nacisnie ENTER...
;
(defun CZEKAJ ()

(progn

;----------
(getstring "\nNacisnij ENTER...")
(princ)
;----------

);progn

);CZEKAJ
;
;=================================================
;
(defun S::STARTUP (/ p1 p2 p3 p4)

(progn

;----------

(command

"_cmdecho" "0"
"_blipmode" "_off"
"_ucs" "_world"
"_zoom" "_window" "0,0" "12,9"

);command

;----------

;zastosowanie wspolrzednych bezwzglednych

;
(princ "\nZastosowanie wspolrzednych bezwzglednych.")
(CZEKAJ)
(setq

p1 "1,1"
p2 '(1 8)
p3 (list 11 8)
p4 "11,1"

);setq
(princ "P1=")(princ p1)(princ "

")

(princ "P2=")(princ p2)(princ "

")

(princ "P3=")(princ p3)(princ "

")

(princ "P4=")(princ p4)(princ "

")

background image

59

BvupMJTQ!—!qsbluzd{oz!lvst

(command

"_color" "1"
"_pline" p1 p2 p3 p4 "_c"

);command

;----------

;zastosowanie wspolrzednych wzglednych

;
(princ "\nZastosowanie wspolrzednych wzglednych.")
(CZEKAJ)
(setq

p1 "2,2"
p2 (strcat "@" "0,5")
p3 (strcat "@" "8,0")
p4 (strcat "@" "0,-5")

);setq
(princ "P1=")(princ p1)(princ "

")

(princ "P2=")(princ p2)(princ "

")

(princ "P3=")(princ p3)(princ "

")

(princ "P4=")(princ p4)(princ "

")

(command

"_color" "3"
"_pline" p1 p2 p3 p4 "_c"

);command

;----------

;zastosowanie wspolrzednych biegunowych

;
(princ "\nZastosowanie wspolrzednych biegunowych.")
(CZEKAJ)
(setq

p1 "3,3"
p2 "@3<90"
p3 "@6<0"
p4 "@-3<90"

);setq
(princ "P1=")(princ p1)(princ "

")

(princ "P2=")(princ p2)(princ "

")

(princ "P3=")(princ p3)(princ "

")

(princ "P4=")(princ p4)(princ "

")

(command

"_color" "5"
"_pline" p1 p2 p3 p4 "_c"

);command

;----------
(command "_color" "_bylayer")
;----------
(princ)
;----------

);progn

);S::STARTUP
;
;*************************************************KONIEC

W powy

ższym przykładzie, funkcję S::STARTUP podzielono na 4 główne sekcje:

background image

3/![bojn!{bd{ojfnz!qsphsbnpxb

5:

Ustawienie zmiennych początkowych.
Wył

ączamy echo komend (CMDECHO) oraz znaczniki punktów (BLIPMODE),

ustawiamy globalny układ współrz

ędnych oraz ekran roboczy o wymiarach 12×9.

Poniewa

ż

wyst

ę

puj

ą

ż

nice w okre

ś

laniu granic rysunku prototypowego

w wersji 12 i 13 AutoCADa, we wszystkich przykładowych programach wyko-
rzystuj

ą

cych komendy do rysowania poszczególnych obiektów rysunkowych,

zastosowano komend

ę

ZOOM do ustalenia odpowiednich rozmiarów okna

roboczego.

Przykład zastosowania współrzędnych bezwzględnych.

Jeszcze raz zostały tutaj powtórzone sposoby podawania współrz

ędnych punktu

za pomoc

ą łańcucha, listy kwotowanej oraz zwykłej listy.

Przykład zastosowania współrzędnych względnych.

Aby uzyska

ć efekt programowego przekazania współrzędnych względnych,

współrz

ędne takie należy podać w formie łańcucha, gdzie pierwszym znakiem

w ła

ńcuchu jest znak @. Zgodnie z powyższym przykładem, współrzędne punk-

tów p2, p3 i p4 wynosz

ą odpowiednio:

p2[X] = p1[X] + 0 = 2
p2[Y] = p1[Y] + 5 = 7

p3[X] = p2[X] + 8 = 10
p3[Y] = p2[Y] + 0 = 7

p4[X] = p3[X] + 0 = 10
p4[Y] = p3[Y] - 5 = 2

Przykład zastosowania współrzędnych biegunowych względnych.

Współrz

ędne biegunowe podwane w formacie r<

φφφφ

okre

ślają położenie punktu na

płaszczy

źnie w biegunowym układzie współrzędnych przez podanie promienia

i k

ąta odchylenia. Współrzędne biegunowe mogą być bezwzględne (obliczane

wzgl

ędem bieżącego UCS) lub względne (obliczane względem ostatnio wprowa-

dzonego punktu). Współrz

ędne biegunowe względne @r<

φφφφ

okre

ślają położenie

wzgl

ędem ostatnio wprowadzonego punktu. Współrzędne biegunowe poprze-

dzone znakiem mno

żenia * określają położenie względem globalnego układu

współrz

ędnych.

Układ odniesienia dla pomiaru k

ą

tów oraz dodatni kierunek k

ą

ta ustalamy

komend

ą

UNITS (JEDN).

Qs{zlbe!4

Poni

ższa zawartość pliku ACAD3.LSP definiuje dwie funkcje: FUNKCJA_1 oraz

S::STARTUP. Zadaniem funkcji FUNKCJA_1 jest utworzenie warstwy WARSTWA_1
oraz narysowanie na niej kwadratu. Zadaniem funkcji S::STARTUP jest wywołanie
funkcji FUNKCJA_1.

background image

61

BvupMJTQ!—!qsbluzd{oz!lvst

;=================================================ACAD3.LSP
;test funkcji S::STARTUP - wersja 3
;
;-------------------------------------------------
;definicja funkcji FUNKCJA_1
;
(defun FUNKCJA_1 ()

(progn

(command

"_zoom" "_window" "0,0" "12,9"
"_layer" "_new" "warstwa_1" ""
"_line" "2,2" "2,4" "4,4" "4,2" "_c"
"_layer" "_set" "0" ""

);command
(princ)

);progn

);FUNKCJA_1
;
;-------------------------------------------------
;wypisanie komunikatu na ekran tekstowy
;
(textscr)

;przejscie na ekran tekstowy

(princ "\nFunkcja FUNKCJA_1 zostala juz zaladowana do
pamieci.")
(princ "\nNacisnij ENTER w celu jej wykonania.")
(setq x (getstring T))
(graphscr)

;przejscie na ekran graficzny

;
;-------------------------------------------------
;definicja funkcji S::STARTUP
;
(defun S::STARTUP ()

(progn

(FUNKCJA_1)

;wywolanie funkcji FUNKCJA_1

(princ)

);progn

);S::STARTUP
;
;-------------------------------------------------
;=================================================KONIEC

Ju

ż od razu widać, że plik ACAD3.LSP składa się z trzech głównych bloków:

definicja funkcji FUNKCJA_1,

wypisanie komunikatu na ekran tekstowy,

definicja funkcji S::STARTUP.

Omówmy po kolei ka

żdy z bloków.

W bloku pierwszym definiujemy funkcj

ę FUNKCJA_1, której zadaniem jest naryso-

wanie kwadratu na warstwie WARSTWA_1. Poniewa

ż na etapie wczytywania pliku

background image

3/![bojn!{bd{ojfnz!qsphsbnpxb

62

ACAD.LSP rysunek nie jest jeszcze w pełni zainicjowany, funkcj

ę tę musimy wywołać

z funkcji S::STARTUP.

W bloku drugim, po przej

ściu na ekran tekstowy, wypisujemy komunikat o pomyślnym

załadowaniu funkcji FUNKCJA_1. Aby zatrzyma

ć wykonywanie pliku ACAD.LSP,

wywołujemy funkcj

ę getstring, która pobiera z klawiatury dowolny ciąg znaków

zako

ńczony naciśnięciem klawisza ENTER. Dopiero wówczas przechodzimy na ekran

graficzny AutoCADa i tym samym ko

ńczymy wykonywanie bloku drugiego.

Blok drugi uwidacznia jeszcze jedn

ą

wa

ż

n

ą

spraw

ę

. Wszystkie wyra

ż

enia

w pliku

.LSP, nie b

ę

d

ą

ce cz

ęś

ci

ą

instrukcji defun, s

ą

automatycznie wykony-

wane podczas wczytywania pliku. Własno

ść

t

ę

mo

ż

na wykorzysta

ć

do ustalenia

warto

ś

ci wybranych parametrów albo wykona

ć

wszelkie inne potrzebne proce-

dury wst

ę

pne, niezale

ż

nie od wy

ś

wietlenia informacji tekstowych. O praktycz-

nym wykorzystaniu tej własno

ś

ci b

ę

dzie jeszcze mowa w dalszej cz

ęś

ci ksi

ąż

ki.

W bloku trzecim, definiujemy funkcj

ę S::STARTUP, której zadaniem jest wywołanie

zdefiniowanej wcze

śniej funkcji FUNKCJA_1.

Qs{zlbe!5

Podczas omawiania pliku ACAD.LSP wspomniałem,

że plik ten może zawierać kod

AutoLISPu dla jednej lub wi

ększej liczby funkcji lub, po prostu, szereg wywołań

funkcji load. Zalecałem równie

ż użycie tego drugiego sposobu postępowania, gdyż

pozwala on na łatwiejsze przeprowadzenie ewentualnych modyfikacji zawarto

ści

biblioteki.

W przykładzie trzecim funkcja FUNKCJA_1 została zdefiniowana w taki wła

śnie sposób

(tj. wewn

ątrz pliku ACAD.LSP). Dopóki funkcji takich jest niewiele i są one bardzo krótkie,

mo

żna postąpić tak jak to zostało zaprezentowane w przykładzie 3. Osobiście odradzam

jednak tego sposobu post

ępowania. W miarę upływu czasu wzrośnie bowiem liczba

aplikacji, których b

ędziesz używał, będą one również coraz dłuższe. Znalezienie i

poprawienie czegokolwiek w jednym ogromnym pliku b

ędzie nie lada wyczynem. Inną

niedogodno

ścią jest też to, że w takich plikach nie mogłoby być dwóch funkcji o

identycznych nazwach — inaczej wczytana ostatnio przesłoni wszystkie poprzednie.

Tak wi

ęc najlepszym rozwiązaniem jest ładowanie kolejnych plików .LSP tak, jak to

opisano w punkcie — Ładowanie programów w AutoLISPie za pomoc

ą pliku

ACAD.LSP, b

ądź tak, jak to zrobimy teraz.

Niech dany b

ędzie plik ACAD4.LSP, zawierający definicję funkcji FUNKCJA_1,

krórej działanie jest identyczne jak w przykładzie 3.

Plik ACAD4.LSP wygl

ąda następująco:

;=================================================ACAD4.LSP
;test funkcji S::STARTUP - wersja 4
;

background image

63

BvupMJTQ!—!qsbluzd{oz!lvst

;-------------------------------------------------
;definicja funkcji FUNKCJA_1
;
(defun FUNKCJA_1 ()

(progn

(command

"_zoom" "_window" "0,0" "12,9"
"_layer" "_new" "warstwa_1" ""
"_line" "2,2" "2,4" "4,4" "4,2" "_c"
"_layer" "_set" "0" ""

);command
(princ)

);progn

);FUNKCJA_1
;
;-------------------------------------------------
;=================================================KONIEC

Plik ACAD.LSP mógłby wtedy wygl

ądać następująco:

;=================================================ACAD.LSP
;-------------------------------------------------
;tutaj definiujemy pozostala czesc pliku acad.lsp

;-------------------------------------------------
;tutaj definiujemy nasza funkcje S::STARTUP
;
(defun S::STARTUP ()

(progn

;----------
;zaladowanie pliku acad4.lsp
(load "acad4")
;----------
;wywolanie funkcji FUNKCJA_1
(FUNKCJA_1)
;----------
(princ)

);progn

);S::STARTUP
;
;-------------------------------------------------
;
;=================================================KONIEC

W pliku ACAD.LSP w funkcji S::STARTUP powodujemy załadowanie pliku
ACAD4.LSP i wywołanie funkcji FUNKCJA_1.

W tym miejscu mo

żesz zapytać, dlaczego plik ACAD4.LSP ładujemy w funkcji

S::STARTUP. W powy

ższym przypadku nie musimy tego robić, gdyż plik ten nie za-

wiera instrukcji poza obr

ębem funkcji defun. Gdyby jednak zawartość pliku

ACAD4.LSP była nast

ępująca (tłustszym drukiem zaznaczone są dodane linie):

background image

3/![bojn!{bd{ojfnz!qsphsbnpxb

64

;=================================================ACAD4.LSP
;plik acad4.lsp po modyfikacji
;test funkcji S::STARTUP - wersja 4
;
;-------------------------------------------------
;definicja funkcji FUNKCJA_1
;
(defun FUNKCJA_1 ()

(progn

(command

"_zoom" "_window" "0,0" "12,9"
"_layer" "_new" "warstwa_1" ""
"_line" "2,2" "2,4" "4,4" "4,2" "_c"
"_layer" "_set" "0" ""

);command
(princ)

);progn

);FUNKCJA_1
;
;-------------------------------------------------
;wywołanie funkcji FUNKCJA_1
(FUNKCJA_1)
;-------------------------------------------------
;=================================================KONIEC

wówczas próba załadowania pliku ACAD4.LSP poza funkcj

ą S::STARTUP spowodo-

wałaby nieokre

ślone zachowanie się AutoCADa.

Tak wi

ęc, jeśli w pliku aplikacji znajdują się instrukcje wywołujące funkcję command,

które maj

ą zostać wykonane automatycznie po załadowaniu programu, program należy

ładowa

ć we wnętrzu funkcji S::STARTUP. Temat ten będzie jeszcze poruszany w dal-

szych cz

ęściach książki.

3/

3/

3/

3/4/6/!Vsvdib

4/6/!Vsvdib

4/6/!Vsvdib

4/6/!Vsvdibnjbojf!qsphsbn

njbojf!qsphsbn

njbojf!qsphsbn

njbojf!qsphsbn(x!x!BvupMJ

(x!x!BvupMJ

(x!x!BvupMJ

(x!x!BvupMJTQjf

TQjf

TQjf

TQjf

Po załadowaniu programu nale

żałoby go uruchomić. Metod uruchamiania programów

te

ż jest kilka. Oto one, w największym skrócie:

Je

śli dany plik został napisany poprawnie, po załadowaniu powinien wyświetlić

w obszarze komend nazw

ę lub nazwy funkcji, które powodują jego urucho-

mienie.

Je

śli plik zawiera funkcje wykonywane automatycznie po jego załadowaniu,

sprawa jego uruchomienia sama si

ę rozwiązuje.

Wi

ększe aplikacje, oprócz funkcji wykonywanych automatycznie, posiadają

swoje własne menu oraz systemy pomocy dla u

żytkownika (nie mówiąc już o in-

strukcji obsługi danej aplikacji). Dopiero praca z takimi aplikacjami dostarcza
prawdziwej przyjemno

ści.

Je

śli dany plik nie posiada żadnej z cech wymienionych powyżej, należy prze-

gl

ądnąć go dowolnym edytorem ASCII, wypisać nazwy funkcji w nim zdefinio-

background image

65

BvupMJTQ!—!qsbluzd{oz!lvst

wanych i próbowa

ć po kolei uruchamiać kolejne funkcje. Bardziej zaawan-

sowani u

żytkownicy AutoLISPu mogą spróbować analizować kody poszcze-

gólnych funkcji (jest to jednak dobre dla krótkich plików o małej liczbie
funkcji).

Rozdział ten zapoznał Ci

ę z przystosowaniem edytora tekstu do pracy pod Auto-

CADem, poznałe

ś najważniejsze reguły pisania programów (nie tylko w języku Auto-

LISP) oraz sposoby wczytywania i uruchamiania programów w AutoLISPie.

Nast

ępny rozdział pomoże Ci zrozumieć mechanizm działania interpretera AutoLISPu

— w jaki sposób i w jakiej kolejno

ści realizowane są polecenia wpisywane z klawiatury

b

ądź też wczytywane z pliku.


Document Outline


Wyszukiwarka

Podobne podstrony:
Zadania Lisp
autocad lisp, Cad Algorytmy
autocad lisp, Cad AutoLISP
al1 lisp 04' id 54559 Nieznany (2)
LISP 1
autocad lisp, Cad 2D
Lab3 LISP
Lisp przyklady
autocad lisp, Cad ProjektLSP
Cad LISP
autocad lisp, Cad Programowanie
knw 2004 LISP
W LISP zaimplementowana jest matematyczna notacja funkcji nosząca nazwę notacji lambda
polecenia lisp
Lisp podstawy
Gabriel & Steele The Evolution of Lisp
lisp index
lisp 15

więcej podobnych podstron