Povratak / Back

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.

 

Free Web Hosting