Autolisp dersleri

Embed Size (px)

Citation preview

DERS 1

AutoLISP Nedir? AutoLISP parantezler dili diye de bilinen LISP (List Processor) programlama dilinin, Autodesk taraf ndan Autocad iin zel fonksiyonlar eklenmi bir alt versiyonudur. Standart LISP fonksiyonlar n n yan s ra karma k Autocad i levlerini yerine getirebilecek fonksiyonlarla glendirilmi tir. LISP programlama dili yapay zeka al malar iin geli tirilen, liste fonksiyonlar gl bir dildir ve bir yorumlay c ya ihtiya duyar. Autlisp'in yorumlay c s Autocad iinde gml olarak gelir. AutoCAD 2.0 srmnden beri Autocad'in zelle tirilmesi iin kullan lan AutoLISP dili, ba larda profesyonel Autocad eklentileri yapmak iin idealdi. Ancak Autocad 11 ile birlikte gelen yeni grafik arayzler ve ObjectARX gibi C++ ile programlanabilme zelli i AutoLISP'i daha ok bir script dili haline getirdi. Her eye ra men AutoLISP, Autocad nesnelerini, veri tablolar n ve komutlar n ynetebilen olduka geli mi bir Autocad programlama arac d r. Autocad'in iinde gml olarak gelen Visual LISP editr ile, ofis ii otomasyonlar n z iin ideal bir dildir. Basit Bir LISP program

(defun ilkFonksiyonum() ..(princ "Merhaba Dnya") ..(princ) ) Grd nz gibi her LISP fonksiyonu bir parantezle ba l yor ve parametreler girildikten sonra parantezler kapan yor. LISP dili "kay p parantezler" dili diye bilinir. At n z parantezi kapamad n zda yazd n z dosyay yklerken mutlaka hata mesaj al rs n z. kr ki AutoCAD 2000'den itibaren Visual LISP editr var ve modern IDE lerde olmas gerekti i gibi dil kontrol yapabiliyor. Madem konu a ld nedir u Visual LISP editr grelim. Visual LISP editr Autocad komut sat r ndan VLISP komutu yazd n zda kar n za kan

penceredir. ekil.1.1

ekil.1.1 Visual LISP IDE lk a ld nda kar n za ekil.1.1 deki manzara kar. lk LISP program m Hi laf uzatmayal m ve ilk program m z yazal m. Yeni bir dosya amaya ihtiyac n z var ve bunu nas l yapaca n z biliyorsunuz. Yeni bir dosya a n ve a a da ekil 1.2. deki kodu olu turun ve ilk.lsp diye kaydedin. te ilk AutoLISP program n z

olu turdunuz.

ekil.1.2. lk AutoLISP program n z. Bu program al t rmak iin nce yklemelisiniz. ekil 1.2'de 2 numaral okun gsterdi i d meye (Load Active Edit Window) komutuna bas n. E er program do ru kodlad ysan z a a daki iletiyi al r n z.

ekil.1.3. Kod do ruysa konsolda alaca n z mesaj byle olacakt r. program n z al t rmak iin Autocad komut sat r ndan (ilkFonksiyonum) yazman z yeterli olacakt r. ekil 1.4

ekil.1.4. te ilk program n z al t . Bu dersimizde AutoLISP'i biraz tan d k. VisualLISP editrnn ana hatlar n rendik. Art k LISP renmeye haz r z. Gelecek derste gr rz sevgili arkada lar.

DERS.2 Visual LISP editr ile program geli tirmek.Seviye: Ba lang / Kaynak: Autodesk VisualLISP yard m dosyas

Organize olun... Hangi programlama dili ile al rsan z al n, gerek anlamda bir program geli tirmek istiyorsan z organize olman z gerekir. E er VLISP ile bir AutoLISP program geli tirmek istiyorsan z a a daki ad mlar gerekle tirmeniz gerekir.y y y y y y

Program n z n yapmas n istedi iniz i lere karar verin ve bu grevlere nas l yakla aca n z planlay n. Program tasarlay n. Kodu yaz n Kodun okunabilir olmas n sa lay n Hata kontroln yap n Program test edin ve hata ay klay n

Bu dersimiz boyunca VLISP ortam nda AutoLISP programlaman n ana hatlar n renmi olaca z. Dersin amac VLISP programlama ortam n tan mak ve programlama al kanl n z bu ortama gre standartla t rmakt r.Konsolu tan yal m

ekil.2.1 VLISP Konsolu

AutoLISP programlar n z geli tirme esnas nda VLISP konsolu en s k ba vuraca n z aland r. _$ ile belirlenmi ayra n sa na denemek istedi iniz fonksiyonlar , an nda grmek istedi iniz sonular yazabilirsiniz. Bu pencereyi Visual Studio'nun immediate window'unla ayn o i levi grmektedir. VLISP program geli tirme sreciniz boyunca bu pencerede olup biteni saklayacakt r. Bylece istedi iniz zaman ieri i geriye do ru kayd r p analizler yapabilirsiniz. Konsol penceresi Autocad'in komut penceresi ile benzerdir. Bu iki pencere birbirine benzer olmas na ra men, her zaman her iki pencerede de ayn komutlar kullanamazs n z. rne in a de i kenine ykl de eri grmek iin konsol penceresinde a yaz p ENTER'e basmak yeterliyken Autocad komut sat r nda a n n de erini renmek iin !a yazmal s n z. Konsol penceresinde a a daki i levleri gerekle tirebilirsiniz:y y y

Herhangi bir LISP koduna devam etmek iin CTRL+ENTER yaparsan z kodu al t rmadan yazmaya devam edebilirsiniz. Yazd n z kodu al t rmak iin ENTER'e basman z yeter. E er bir blm i aretleyip ENTER'e basarsan z sadece i aretledi iniz kod al t r l r.

Autocad komut penceresi ile konsol aras ndaki bir fark da SPACE tu unun kullan m d r. Autocad'de SPACE, komut onay iin kullan l rken konsol penceresinde bo luk anlam na gelir. Birden fazla izim iin konsol penceresi

Autocad'de at n z izim adedi ne olursa olsun sadece tek bir konsol penceresi vard r. Autocad'de aktif olan izime ait komutlar konsol penceresinde grrsnz. Ya da Autocad'i etkileyecek bir komut verdi inizde o anda hangi izim penceresi aktifse o pencerede komut al r. Konsol penceresi hangi izim aktif ise ona ait tariheyi ve dosyalar ierir.Konsol K sayollar n Kullanmak

Konsol mende al rken ihtiya duyaca n z en yayg n komutlar farenizin sa tu u ile aktif olacak bir k sayol mensne konmu tur. Komut Yapt i lem Cut Kesme i lemi Copy Kopyalama i lemi Paste Yap t rma (Clipboard ier iini) Clear Console Window Konsol penceresini temizler Inspect Inspect diyalog kutusunu aar Add Watch Watch diyalog kutusunu aar Apropos Window Apropos penceresini aar Symbol Service Sembol servis penceresini aar Undo Geri alma i lemi Redo leri alma i lemi Konsoldaki ieri i Autocad komut sat r Autocad Mode format na evirir Konsol penceresi k ieri ini log'a Toggle Console Log kopyalar Konsol penceresinin logunu tutmak. leride yapman z gerekebilecek muhtemel analizler iin konsol penceresinin aktivitelerine ait bir log dosyas tutmak isteyebilirsiniz. Bunu yapmak iin konsol penceresinin iinde herhangi bir alana farenizin sa tu uyla klikleyin ve a lan menden "Toggle Console Log" deyin. Log dosyas n n yerini gsterin ve ad n girin. Bundan sonra konsolunuzun tm ieri i ve aktiviteleri bu dosyaya kaydolacakt r. Text Editrn Kullanmak

ekil.2.2. VLISP Text Editr

E er sadece bir ka LISP komutunu denemek istiyorsan z konsol yeterlidir. Ancak bir program yazmak ve onu saklamak, gerekti inde iziminize ykleyip al mak istiyorsan z text editrne ihtiyac n z vard r. Text editr VLISP'in ana bir unsuru olup kullan m Windows programlar na a ina olanlar iin olduka basittir. Visual LISP text editr, parantez bulma, szdizimi renklendirme ve keyword'leri otomatik alg lama gibi kod yaz m n kolayla t racak yeteneklerle donat lm t r. Text editrnde yeni bir dosya amak iin File/New File... seene i yeterlidir. Yeni bir dosya at n z bile. T pk

di er ditr programlar nda oldu u gibi yaz m kurallar ayn d r. Konsol penceresinde oldu u gibi text editrnn de k sayol mens mevcuttur. Sa t klamayla a lan mennn ieri i yledir. Komut Cut Copy Paste Find Inspect Toggle Breakpoint Apropos Window Add Watch Undo Redo Symbol Service Renk Kodlamalar Color Blue Magenta Green Magenta/Gray Bg Red AutoLISP language element Lisp dili fonksiyonlar ve korunmu semboller Dizeler Tam say lar A klama sat rlar Parantezler Yapt i lem Kesme i lemi Kopyalama i lemi Yap t rma (Clipboard ieri ini) Kelime arama penceresi a l r Inspect diyalog kutusunu aar Breakpoint imi koyar veya kald r r Apropos penceresini aar Watch diyalog kutusunu aar Geri alma i lemi leri alma i lemi Sembol servis penceresini aar

Kod yaz m s ras nda yard m almak iin, kursrnz yard m almak istedi iniz fonksiyonun sonundayken F1 tu una bas n. Kodunuzu anla l r yaz n Yazd n z kodun sonradan okunabilirli ini sa lamak ok nemlidir. Bu yzden kodunuzu okunakl yazmal s n z.Tools > Environment Options > Visual LISP Format Options mensnden yaz m format n z ayarlayabilirsiniz. Anla l r bir LISP kodu a a daki gibi olmal d r. ekil 2.3

ekil.2.3. Dzgn kodlamaya bir rnek

DERS.3 AutoLISP Deyimleri, De i kenleri ve Veri TipleriSeviye: Ba lang

AutoLISP Deyimleri Bir AutoLISP program alt alta seri halinde deyimlerden olu ur. En basit anlam yla bir LISP deyimi a a daki gibidir. (fonksiyon argmanlar) Her LISP deyimi bir parantez aarak ba lar. Bunu fonksiyon ve ona ba l argmanlar (parametreler) izler ve parantez kapanarak biter. Her deyim kendini kapsayan bir ba ka deyimin kullanaca bir dn de eri olu turur. En son yorumlanan deyimin de eri kendini a ran deyime dner. rne in: (* 2 (+ 5 3)) 16 arpma fonksiyonun birinci argman bir numarad r. kinci argman ise bir toplama i leminin sonucudur. Yorumlay c nce en iteki parantezlerde bulunan deyimi yani 5 + 3 i lemini yorumlar ve sonu de erini arpma i lemini bulunduran deyimin 2. argman olarak dner. E er kapatmad n z eksik parantez olursa 16 sonucu yerine a a daki gibi grnr. (* 2 (+ 5 3) (_> Bu durumda hemen eksik kalan parantezi kapat rsan z yorumlay c grevine devam eder. (* 2 (+ 5 3) (_>) 16 AutoLISP Veri Tipleri AutoLISP deyimleri parantezlerin iindeki veri tpilerinin s ralamas na ve niteliklerine gre i lem grr. AutoLISP'i tam anlam yla kullanman z iin veri tiplerini iyice anlamal s n z. Integer (Tamsay lar) inde ondal k ayrac olmayan say lard r. 32 bitlik bu say lar -2,147,483,647 ile +2,147,483,648 de erleri aras ndaki tm tamsay lard r. E er bu aral n d nda bir tamsay girecek olursan z yorumlay c bunu otomatik olarak reel say ya evirecektir. Ancak rne in, iki geerli tamsay n n toplam 32 bitlik sistemde olabilecek en byk tamsay n n de erinini geiyorsa sonu geersiz olacakt r. rnek:

(+ 2147483646 3) -2147483647 Sonu negatif tamsay kar. Real (Reel Say lar) AutoLISP te reel say lar floating point format nda olan noktadan sonra 14 hane hassasiyetli say lard r. AutoLISP yorumlay c s iin gerek say lara rnek olarak 3.1 -5.4 0.0000013 21,000,000.0 verilebilir. String (dizi) inde bir dizi alfanmerik karakter bulunduran katarlard r. "Kelime 1" "kitap" "H&B" "?*_i" gibi dizeler AutoLISP yorumlay c s iin geerli dizelerdir. \ karakteri AutoLISP dizelerinde kontrol karakeri girmenizi sa lar. Bu kontrol karakterlerinin listesi a a daki gibidir. AutoLISP control characters Code Description Kod \\ \" \e \n \r \t \ nnn A klama \ karakteri iin (princ "\\ahmet") "\ahmet" " karakteri (princ "\"Deneme\"") ""Deneme"" Escape Yeni sat ra gemek iin (princ "Bu ilk Sat r \nBu ikinci sat r") Bu ilk sat r Bu ikinci sat r ENTER TAB bir tab sa a geirir (princ "Ali\tVeli\tAy e") Ali.......Veli........Ay e nnn kodundaki ACCII karakteri

Lists (Listeler) Biribirlerinden bir bo lukla ayr lan parantez iindeki de erler silsilesine liste denir. Biribiri ile ilgili bir ok say y birarada saklaman n en etkili yolu listelerdir. rne in bir noktay (13.45 23.50 0.00) listesinde saklayabiliriz. leride listelerle ilgi ok daha fazla ayr nt y payla aca z. Selection Sets (Seim setleri) Bir veya birden fazla Autocad nesnesinin ol turdu u gruplard r. AutoLISP kullanarak seim setlerine nesne ekleyebilir ya da karabilirsiniz.

Entity Name (Varl k isimleri) izimdeki nesnelere Autocad taraf ndan verilen numerik etikete varl k ismi denir. Varl k isimleri izim iindeki nesnelerin veritaban na ula mak iin kullan labilir. Seilen nesneler zerinde de i ik i lemler yapmak iin ok e itli LISP rutinleri vard r. Bu konuyu ilerideki derslerimizde geni bir biimde ele alaca z. AutoLISP De i kenleri (Variables) Her programla dilinde oldu u gibi AutoLISP dilinde de de i kenler vard r. AutoLISP dilinde bir de i keni nceden tan mlaman z gerekmez. De i ken atand anda e itlenir ve e itledi iniz veri tipinde yarat l r. Birka de i ken yaratal m. AutoLISP de i keni yaratma, tan mlama ve atama iin tek bir fonksiyon kullan l r. (setq isim "Haluk") Yukar daki de im isim ad nda bir de i ken yarat r, string olarak tan mlar ve "Haluk" de erini bu de i kene atar. AutoLISP bir yorumlay c oldu u iin de i kenlerin tm (fonksiyon argmanlar hari) global yani di er fonksiyonlar taraf ndan tan nabilirdir. AutoLISP de i kenlerinin tm global oldu una gre de i ken ismi verirken dikkatli olmal y z. (setq intNoktaAdedi 5) (setq strAd "Orhan" strSoyad "Toker") (setq lstBaslangicNoktasi (getpoint "\nBir nokta girin")) Yukar daki tm rneklerde de i kenlere verilecek isimlere dikkat edilmi tir. Autolisp yorumlay c da de i ken tipleri nceden tan mlanamad ve tm de i kenler global oldu u iin, kodlarken de i keninizin tipine uygun n ekler koymaya zen gsterirseniz i inizi kolayla t rm olursunuz. Bir de i kenin de erini izlemek Herhangi bir de i kenininizin de erini o anda renmek istiyorsan z konsol veya komut sat r ndan bunu yapabilirsiniz. kisi aras nda ok az bir fark vard r. $_strAd ;konsoldan renme "Orhan" Command: !strAd ;komut sat r ndan renme "Orhan" Grd nz gibi de erini renmek istedi iniz de i kenin ad n n ba na ! i areti koyman z yeterli. nceden tan mlanm de i kenler AutoLISP'te de i ken ismi olarak kullanamayaca n z nceden tan ml 3 de i ken vard r.

PI Pi sabiti T .True PAUSE komut duraksamas Forcing (zorlama) ki tamsay n n blmn gerek say elde etmek iin (/ 12 5) ;Forcing yap lmadan 2 (/ 12 5.0); forcing ile 2.4 Bu dersimiz bu kadar. Ho akal n.

DERS.4 (command) fonksiyonuSeviye: Ba lang Kaynaklar: Autodesk, VisualLISP IDE Help file

Merhaba, Bu derste (command) fonksiyonunu ele alaca m. Bildi iniz gibi AutoLISP, Autocad iin bir makro dili olmaktan ok daha te bir dil olmas na kar n temelde Autocad'e scriptler yazmakt r. Eh biz de i e temelden ba lad m za gre, Autocad'e bir eyler yapt rman n ek kolay yolu olan (command) fonksiyonunu inceleyece iz. (command) fonksiyonu Autocad'in komut sat r na direk komut gndermek iin kullan l r. (command) fonksiyonu, kullanaca n z Autocad komutuna ba l olarak de i ik tipte ve say da argman kullan r. A , mesafe, nokta gibi veriler t rnak iinde verilebilece i gibi direkt say olarak da (command) fonksiyonunun argmanlar na pas edilebilir. Fonksiyona pas edece iniz bo bir dize "" Autocad komut sat r nda ENTER ya da SPACE ile ayn i i grecektir. stisna olarak (command) fonksiyonunda SKETCH komutunu ve Autocad komutu olarak tan mlanm c:nnn lisp fonksiyonlar n kullanamazs n z. A a daki rnek kod sat rlar (command) fonksiyonunun bir ka kullan m eklini gsterir. (command "circle" "0,0" "3,3") (command "thickness" 1) (setq p1 '(1.0 1.0 3.0)) (setq rad 4.5) (command "circle" p1 rad)

Yabanc Dil Deste i Tasarlad n z program n AutoCAD'in tm di er dillerdeki srmlerinde al mas n istiyorsan z, (command) fonksiyonu ile Autocad komutlar n a r rken alt izgi (_) kullanmal s n z. A a daki sat r buna rnektir.

(command "_line" pt1 pt2 pt3 "_c") Bu bilgiye ek olarak, e er kullan c taraf ndan yeniden tan mlanm olma olas l olan Autocad komutlar ndan ka nmak istiyorsan z nokta (.) karakterini kullanmal s n z. Her ikisini bir arada ya da ayr ayr kullanabilirsiniz. (command "._line" pt1 pt2 pt3 "_c") (command "_.line" pt1 pt2 pt3 "_c") (command ".line" pt1 pt2 pt3 "c")

Kullan c giri i iin duraklama Komutun icras s ras nda, nokta girme ya da sndrme gibi kullan c dan istenecek giri ler iin PAUSE de i keni argman olarak girilir. Bu menlerdeki ters bl (\) sembol ile ayn d r. Bir rnekle a klayal m: (command "._circle" PAUSE 50.0) Bu sat r komut sat r na girdi inizde Autocad ember komutuna girecek ve sizden emberin merkezini girmeniz iin duraklayacakt r. Siz herhangi bir nokta giri i yapt n z anda yar ap 50 olan emberi belirledi iniz merkeze izecektir. Not: E er komut icras n PAUSE ile duraklatt ysan z, bu duraklama esnas nda effaf komutlar kullanabilirsiniz. Az nceki rnekte Autocad dairenin merkezini girmeniz iin duraklad nda 'zoom ya da 'pan effaf komutlar n kullanailirsiniz. Farenizin tekerle i dolay s yal bu bilgi nemini yitirmi olsa da yazmakta fayda grdm. nemli: E er ATTRIBUTE ya da TEXT giri i iin PAUSE kulland ysan z, Autocad sadece TEXTEVAL sistem de i keni 0 de ilse veri giri ini bekler. TEXTEVAL 0 ise PAUSE duraksamas al mayacakt r.

Seme noktalar n n (PICK POINTS) (command) fonksiyonuna pas edilmesi. TRIM, EXTEND ve FILLET gibi komutlarda hem nesne seimi hem de seim noktas n n belirlenmesi bir arada yap l r. Bunun gibi hem seilen nesneyi hem de seim noktas verisini ayn anda (command) fonksiyonuna pas etmek PAUSE argman yla mmkn olamaz. Bunun yerine bu verileri komuttan nce de i kenlere saklamak gerekir. rnekte bunun yap l n gryorsunuz. (command "._circle" "5,5" "2") ;daireyi izer (command "._line" "3,5" "7,5" "") ;izgiyi izer (setq el (entlast)) ;son izilen nesneyi el de i kenine saklar (setq pt '(5 7)); seim noktas n pt de i kenine saklar (command "trim" el "" pt "") ;trim komutu icra edilir

Bu tip i lemler iin dikkatli olmal s n z.y y

Pick point ve i lem yap lacak nesneler o anda model penceresinin iinde olmas gerekir Gerekirse "PICKBOX" sistem de i keninin de erini biraz bytebilirsiniz.

Bu dersimiz bu kadar. Kendi kendinize rnekleri tekrarlaman zda yarar var.

DERS.5 Kullan c giri fonksiyonlarSeviye: Orta Kaynaklar: Autodesk, VisualLISP IDE Help file

Merhabalar, Bu dersimizde kullan c dan veri toplaman n yollar n renece iz. Autocad ile izim yaparken kulland m z komutlar bizden e itli verileri girmemizi ister. rne in bir ember izerken AutoCAD sizden merkez noktas n ve yar ap soracakt r. Siz de AutoLISP ile program geli tirirken kullan c dan bir ok kez veri girmesini isteyeceksiniz. A a da kullan c dan girmesini isteyebilece iniz veri tiplerini ve hangi fonksiyonla bu veririn toplanaca n gsteren tabloyu greceksiniz. stenen Veri Tipi Say sal de er A Di er k e Mesafe Seenek Nokta Dize A klama Giri Fonksiyonu

Herhangi bir reel ya da tamsay say sal (getint [mesaj]) (getreal [mesaj]) de er. (getangle [nokta] Autocad a de eri almak iin. [mesaj]) Bir noktadan referans alarak di er bir (getcorner nokta k e almak iin kullan l r. Dn de eri [mesaj]) nokta listesidir (getdist [nokta] Bir uzakl k de eri giri i iin kullan l r [mesaj]) Kullan c dan bir seenek girmesi iin (getkword [mesaj]) kullan l r. (getpoint [nokta] Kullan c dan nokta giri i istemek [mesaj]) Kullan c dan alfanmerik bir giri (getstring [cr] [mesaj]) istendi inde kullan l r Tablo.1 Kullan c giri fonksiyonlar

imdi bu fonksiyonlar birer rnekle k saca inceleyece iz. (getint) ve (getreal) fonksiyonlar Bu fonksiyonlar kullan c dan reel ya da tamsay giri i istendi i zaman kullan l r. rnekle (setq (getint "\nKa adet kat kopyalayacaks n z?:")) (setq a (getint "\nKaresini almak istedi iniz say ?:"))

(princ (* a a)) (setq kot (getreal "\nLtfen 1.Kat kotunu girin:")) Grd nz gibi (getint) ve (getreal) fonksiyonlar ile birlikte kullan c dan veri giri i istemek iin bir a klama mesaj da girebiliyoruz. nemli: AutoLISP programlar n zda kullan c dan veri giri i esnas nda yazaca n z mesaj kullan c y ynlendirece i iin ok nemlidir. E er kullan c dan, nokta, a , mesafe gibi standart Autocad verileri istiyorsan z mesaj n z n da Autocad mesaj standard nda olmas gerekir. Elbette tm veri giri i mesajlar n z n da belli bir uslpta olmas tercih edilir. Mesaj n ba na koydu unuz "\n" kodu mesaj n z n yeni sat rda kmas n sa lar. (getangle) ile a giri i Kullan c dan a girmesini istiyorsan z bu fonksiyonu kullan rs n z. (getangle) fonksiyonu iste e ba l iki adet argman kullan r: (getangle [nokta] [mesaj]) Nokta argman n girerseniz girdi iniz nokta referans al narak a giri i yapt r rs n z. Bu fazlaca kullan lam bir metot de ildir. Biz ikisine de rnek verelim. (setq aci (getangle "\nA y girin:")) Kullan c n n yapt (* 180.0 (/ aci pi)) (setq aci (getangle (getvar "LASTPOINT")) "\nYn girin: ")) kinci rne imiz girilen son noktadan yn tayini istiyor. (getcorner) ile di er k eyi tayin etmek Baz durumlarda kullan c dan bir ereve tayin etmesini isteyebilirsiniz. rne in kendi dikdrtgen rutininizi yaz yorsunuz ya da seim penceresini nceden tayin ettirmek istediniz. te byle durumlarda (getcorner) ok yararl d r. Laf uzatmayal m kendi dikdrtgen rutinimizi yazal m. a giri ini aci de i kenine radyan olarak girer. Radyan dereceye evirmek iin

Resmin zerine t klayarak dortgen.lsp dosyas n indirebilirsiniz. Bu kodu Autocad vlisp komutu ile at n z VisualLISP editrnde olu turun ve dortgen.lsp diye kaydedin. Sonra CTRL+ALT+E tu lar na basarak projeyi Autocad'e ykleyin. komut sat r ndan dortgen yazd n zda dikdrtgen izen komutunuz i lemi olacakt r. Bu projede kulland m car, cadr ve list fonksiyonlar n ileriki derslerimde a klayaca m. Burada mhm olan (getpoint) ve (getcorner) fonksiyonlar n nas l kulland m za dikkat etmenizdir. nemli:Dikkat ederseniz ayn (setq) e itleme fonksiyonu ierisinde dikdrtgenimizin her iki k esini de kullan c dan alm oldum. Yani (setq) e itleme fonksiyonunu ayn anda birden fazla de i kenin de erini e itlemek iin kullanabilirsiniz. Kodlama s ras nda hizalamaya dikkat edin yeter. Ayr ca c:dortgen fonksiyonumu tarif ederken ba na koydu um "c:" neki bunun bir Autocad komutu gibi al as n sa layacakt r. Bu n eki koymad n zda komut sat r ndan di er lisp fonksiyonlar n a rd n z gibi a r rs n z. Command:(dortgen) Fonksiyon tan m nda (/) i aretinden sonra tan mlad m de i kenler sadece fonksiyon iinde lokal olarak tan mland klar n gsterir. (getdist) ile mesafe giri i yapt rmak (getdist) fonksiyonunu kulland n zda, kullan c direkt bir de er girerek, iki nokta belirleyerek, ya da bir noktadan referans alarak mesafe girebilir. (getdist) fonsiyonu ilk girilen noktadan sonra, Autocad'in her trl nokta belirleme yntemini kullarak di er bir nokta girmenizi bekler. Bu bekleme esnas nda 1. noktadan kursrnzn ucuna bir ipcik izecektir. (setq mesafe (getdist "\nMesafeyi girin:")) (getkword) ile kullan c dan seenek belirlemesini istemek. Baz durumlarda kullan c dan komut sat r arac l ile seenek isteyebilirsiniz. Buna rnek olarak Autocad CIRCLE komutunu verebiliriz. Command: circle Specify center point for circle or [3P/2P/Ttr (tan tan radius)]: Yukar daki rnekte [3P/2P/Ttr (tan tan radius)]: birer seenektir. Kendimiz bir rnek yapal m. Sordu umuz soruya sadece "Evet" ya da "Hay r" yan t n giri olarak kabul eden kod: (initget 1 "Evet Hay r") (setq cevap (getkword "\nKomut izimdeki tm nesneleri silsin mi? [Evet Hay r] : ")) Yukar daki kod kullan c dan sadece "Evet" ve "Hay r" yan tlar n kabul edecektir. (initget) fonksiyonu veri giri lerini nceden ko ulland rmaya yarar. Bu fonksiyonu geli mi derslerimizde daha ayr nt l ele alaca m. (getpoint) ile kullan c dan nokta istemek Kullan c n n tek bir nokta girmesini istedi inizde (getpoint) fonksiyonunu kullanabilirsiniz. Kullan c n n verece i nokta yan t tm Autocad nokta tayin etme yntemleri olabilir. (setq pt1 (getpoint "\nDrtgenin 1.k esini t klay n:")) Yukar daki dortgen.lsp rne imizde bu fonksiyonu zaten kullanm t k. (getstring) ile kullan c dan dize giri i istemek.

zellikle etiket ya da mahal adlar dolduran rutinlerinizde s kl kla kullanaca n z bir fonksiyondur. Kullan m : (getstring [cr] [mesaj]) cr argman ENTER ya da bo luk karakterini kabul edip etmeyece inizi belirler. nil ise bo luk karakteri giremezsiniz. (setq mahalAdi (getstring "\nMahal ad n girin:")) (setq mahalAciklamasi (getstring T "\nMahal a klamas n girin:")) rnekte grld gibi, isimde bo luk kabul etmezken, a klamada bo luklara msade ediyoruz. Al t rmalar Kendi kendinize yapabilece iniz al t rmalar:y y y

(getpoint) kullanarak Autocad izgi komutunu taklit edin. (getdist) ve (getangle) kullanarak polar koordinat sistemi ile izgi izdirin. @mesafe