Razložba računalne podpore koja uzima podatke iz
podatkovnice ,,dane.txt'', a koja se nalazi na ,,c:/dane.txt'', ter podatak iz
svakog reda te podatkovnice izpisuje u AutoCAD-u na mjesto gdje smo uboli s
mišem.
;Izradio Dane
(defun c:poziv () ;1
(setq f (open "c:/dane.txt" "r")) ;2
(setq red (read-line f)) ;3
(setq red (read-line f)) ;4
(while (/= red "EOF") ;5
(setq tocka (getpoint "\nUbodi
tocku na mjesto gdje zelis izpis razlike:")) ;6
(command "text"
"j" "bl" tocka "2" "0" red) ;7
(setq red (read-line f)) ;8
) ;9
(close f) ;10
) ;11
Razložba
podpore red po red:
1) (defun c:poziv ()
;1
Naredbom ,,defun'' započinjemo podporu,
gdje ,,c:poziv ()'' znači kako će se ova podpora u AutoCAD-u pozivati samo s
,,poziv''.
2) (setq f (open "c:/dane.txt" "r"))
;2-Opens the file to read
Naredbom ,,open'' učitavamo podatkovnicu
,,dane.txt'' na način da navedemo njezino mjesto na tvrdom pamtilu od računala.
"r" znači kako će se ova podatkovnica moći samo izčitavati, a ne
nešto unositi u nju ili pak mienjati nešto u njoj.
Naredbom ,,setq'', tu učitanu podatkovnicu
pridružujemo promjenjivoj vriednosti ,,f''.
Sve što dolazi nakon točke-zarez ; ne će
biti od podpore prepoznato kano naredba, već će to biti samo primjetba ili
podsjetnik za izraditelja podpore.
Napomena:
Naredbe se u AutoLISP-u čitaju od
najunuranjije zagrade prema vanjskima!
3) (setq red (read-line f)) ;3-Reads the header
Naredbom (read-line f) mi izčitavamo redak
iz učitane podatkovnice, a u ovom slučaju to će biti prvi redak. Najčešće prvi
redak u podatkovnici bude neki naslov. Ta izčitana vriednost je u obliku
znakoniza (stringa). Znači čitav jedan redak je učitan kano znakoniz.
Zatim pomoću naredbe ,,setq'', mi taj
redak pridružujemo promjenjivoj vriednosti ,,red''.
4) (setq red (read-line f)) ;4-Reads the
1st data line
Ista stvar kano i u predhodnom redku
podpore, samo će u ovom slučaju to biti izčitan drugi redak iz podatkovnice.
5) (while (/= red "EOF") ;5-Loop until the end of file
Naredba (/= red "EOF")
provjerava je li izčitani redak iz podatkovnice različit od kraja podatkovnice.
EOF je skraćenica od END OF FILE.
Naredba ,,while'' će se vrtiti dok je ovaj
uvjet zadovoljen.
6) (setq tocka (getpoint "\nUbodi tocku na mjesto gdje
zelis izpis razlike:")) ;6
Naredba ,,getpoint'' traži od koristnika
da na radnoj površini AutoCAD-a ubode točku, od koje zatim preuzme položajnu
vriednost x,y. Proslov između navodnika je naputak koristniku.
Naredbom ,,setq'' pridružujemo tu dobivenu
položajnu vriednost promjenjivoj vriednosti ,,tocka''. Ta položajna vriednost
je u promjenjivoj vriednosti ,,tocka'' spremljena kano niz (y x z).
7) (command "text" "j" "bl"
tocka "2" "0" red) ;7
Ovo je jedna od unutarnjih naredbi
AutoCAD-a, koje se također mogu rabiti u AutoLISP-u. To je naredba za upis
proslova na radnu površinu AutoCAD-a. Proslov će u ovom slučaju biti izpisan na
položaju ,,tocka'', veličine slova 2, a bit će izpisana vriednost koja se
nalazi u znakonizu ,,red''. Druge stvari također daju neki opis proslovu, ali u
ovom slučaju nisu važne.
8) (setq red (read-line f)) ;8-Read the next data line
Ista stvar kano u 3. redku podpore.
9) )
;9
Ovime završava naredba ,,while''.
10) (close f) ;10-Close the file
Ovako se zatvara podatkovnica, ter bez
toga, vrlo vjerojatno ne bi radila podpora.
11) )
;11
Ovime se zatvara naredba ,,defun'', t. j.
u ovom slučaju se završava podpora.