Kullanıcı Adı : Şifre : Beni Hatırla ?  Ücretsiz Üyelik  |  Şifremi unuttum?  |  Arkadaşa tavsiye Tavsiye et
Forumda laubali konuşmalar ve teknik bilgi içermeyen yorumlar yasaklanmıştır. Yorumlarını, cevaplarını düzgün ve düzeyli bir Türkçe ile yapmayan üyeler siteden uzaklaştırılacak, gönderdiği iletiler silinecektir.
Forum için önerilen resim genişliği: 560 pikseldir.

 

Bu başlığı inceleyenler : 1 ziyaretçi, 0 üye : ---

4 kullanıcı bu konuya ileti yazdı : ehya (2) KADIKIZI (1) sahin460 (1) tekir06 (1)

> 1 <

Yazar İleti
ehya

[70] Editör


Online Durumu

1955 ileti
Şehir: Türkiye Ankara
Meslek: Teknik Ressam
Yaş: 27

Arkadaş Listeme Ekle

#37837   18.06.2008 10:43 GMT      
Bu dersimizde lisp içinde değerleri ekrana yazdırırken uygulanacak işlemden bahsetmek istiyorum.

\n = Yazının yeni bir satıra yazılmasını sağlar

\t = Bir tab sağa geçirir.

\e = Escape yapılmasını sağlar.

\r = Enter

\\ = \ karakteri için kullanılır.



Yeni bir lisp yazmak istediğinizde lispiniz;

(defun c:ARCHME ()

şeklinde başlamalıdır. Bu satırı anlatmak gerekirse programın ana gövdesini başlattığımızı, lisp bittiğinde bu lispi ARCHME adıyla çalıştırabileceğimizi tarif ediyor. Burada “ARCHME” adıyla belirttiğim yere kendi lispinizin hangi komutla çalıştırmak istiyorsanız onu yazabilirsiniz.
Komut isminden öne c: diye bir yazı var. Bunun c sürücüsüyle bir alakası olmadığını belirteyim.

Lisp içinde her hangi bir değeri saklamak için ise; setq tanımını kullanmamız gerekiyor.

Örneğin;

getstring komutu ile bir metin kullanıcıya bir kelime yazdırtalım ve lisp içinde bu değeri saklayalım. Getstring tanımını bir sonraki yazımda tarif edeceğim.

(setq isim (getstring "\nİsminizi yazın:"))


Bu satırı çalıştırdığımızda komut satırında

Command: (setq isim (getstring "\nİsminizi yazın:"))

İsminizi yazın:

komut satırında yukarıda görüldüğü gibi uyarı gelecek. Burada isminizi yazdığınızda isminiz "isim" girdisi altında saklanacaktır.

Autocad ekranından bu girdilerin değerlerine bakmak istiyorsanız komut satırına !isim yazarak yani girdinin başına ünlem işareti koyarak değerini öğrenebilirsiniz.

Bir lispi yazarken unutulmaması gereken; ne kadar sol parantez varsa o kadar da sağ parantez olmalıdır. Yani açılan her fonksiyonun kapatması olmalıdır. Tabiki uygun yerlere.




Autolisp içinde en çok kullanılan işlemlerden birisi de liste fonksiyonudur. Lisp içinde birden fazla değeri tek bir liste içinde saklamak için kullanılır.

Örnek :

Command: (setq liste '( "elma" "portakal" "erik" "limon"))

Sonuç : ("elma" "portakal" "erik" "limon")


İleriki yazılarımda bu tür listelere müdahale ve işlemleri anlatacağım.


Bir lispi yazdıktan sonra yükleme yaparken, eğer hatalı bir yazım varsa yorumlayıcı tarafından en çok aşağıdaki uyarı mesajlarını alırsınız.

Extra right paren
Programın herhangi bir yerinde fazladan bir sağ parantezin olduğunu belirtir.

Malformed list on input
Programın herhangi bir yerinde eksik parantez ya da tırnak işaretinin olduğunu belirtir.

Bununla beraber birkaç uyarı mesajını ve anlamlarını belirteyim.

Divide by zero
Programın bir yerinde değer 0 (sıfır)’a bölünmeye çalışılıyor.

Bad node
TYPE fonksiyonu için geçersiz eleman tipi belirtilmiş.

Invalid argument
Hatalı argüman tanımlaması veya tanımlanan argüman sınırlar dışında kalmakta.

Invalid character
Bir deyim, uygun olmayan bir karakter içermekte.


Yazmış olduğunuz lispin autocad'in farklı dillerdeki sürümlerinde de çalışmasını istiyorsanız, command komutu ile kullandığınız autocad komutlarının başına “_” alt çizgi kullanmalısınız.

Örnek :

(command "_line" nok1 nokt2 "")


Bu dersimizi karakter işlem komutlarıyla ilgili birkaç örnek yaparak bitireceğim.

Toplama :
(+ 2 3 5)..........................Sonuç : 10


Çıkarma :
(- 50 20 2.5)....................Sonuç : 27.5


* Çarpma :
(* 3 2 2)..........................Sonuç : 12


/ Bölme :
(/ 60 2 3.0)......................Sonuç : 10.0


= Eşittir (equal)
(= 4 4.0)..........................Sonuç : T
(= "sen" "ben")...............Sonuç : nil
(= 12.0 12.0 12.0)..... .....Sonuç : T


= Eşit değil (not equal)
(/= 10 20)........................Sonuç : T
(/= "sen" "sen")...............Sonuç : nil


< Küçüktür (less than)
(< 10 20).........................Sonuç : T
(< "b" "c")........................Sonuç : T
(< 357 33.2).....................Sonuç : nil
(< 2 3 88).........................Sonuç : T


<= Küçük veya eşit ise (less than or equal to)
(<= 10 20)........................Sonuç : T
(<= "b" "b")......................Sonuç : T
(<= 357 33.2)...................Sonuç : nil
(<= 2 9 4 5)......................Sonuç : nil


> Büyüktür (greater than)
(> 120 17)........................Sonuç : T
(> "c" "b").........................Sonuç : T
(> 3.5 1792).....................Sonuç : nil
(> 77 4 2).........................Sonuç : T
(> 77 4 4).........................Sonuç : nil


>= Büyük veya eşit ise (greater than or equal to)
(>= 120 17)......................Sonuç : T
(>= "c" "c").......................Sonuç : T
(>= 3.5 1792)...................Sonuç : nil
(>= 77 4 4).......................Sonuç : T
(>= 77 4 9).......................Sonuç : nil


~ bitwise (tam sayının tersini alıp 1 azaltmak)
(~ 3).................................Sonuç : -4
(~ 100).............................Sonuç : -101
(~ -4)................................Sonuç : 3


1+ (arttırma)
(1+ 3)................................Sonuç : 4
(1+ 5)................................Sonuç : 6


1- (azaltma)
(1- 3).................................Sonuç : 2
(1- 5).................................Sonuç : 4



Bundan sonraki dersimizde auolisp'de kullanılan komutların tanımlarını örnekleriyle anlatacağım.

tekir06

[5] Üsteğmen


Online Durumu

58 ileti
Şehir: Türkiye ankara
Meslek: tek.Res.
Yaş:

Arkadaş Listeme Ekle

#37846   18.06.2008 12:24 GMT      
teşekkürler usta

çArşı

sahin460

[8] Yüzbaşı


Online Durumu

116 ileti
Şehir: Türkiye kayseri
Meslek: elektrik tekniker
Yaş:

Arkadaş Listeme Ekle

#37868   18.06.2008 17:19 GMT      
teşekkürler helal sana ehya kardeş

KADIKIZI

[5] Üsteğmen


Online Durumu

35 ileti
Şehir: Türkiye Ankara
Meslek: Grafiker ve İnşaat teknikeri
Yaş: 35

Arkadaş Listeme Ekle

#38154   26.06.2008 10:21 GMT      
sagolasın Ehya... eline emegine saglık

anlayamamaktan cok korkuyorum niyeyse (sınıfta kalma fobisi sanırım :P)

Damla, kendini tamamladıktan sonra damlar.

ehya

[70] Editör


Online Durumu

1955 ileti
Şehir: Türkiye Ankara
Meslek: Teknik Ressam
Yaş: 27

Arkadaş Listeme Ekle

#38156   26.06.2008 10:38 GMT      
yok yok anlamamazlık olmayacağına eminim. Tüm dersleri tek format altında topluyorum. O yüzden 3ncü ders eklenmeyecek. Toplu halde göndereceğim. Bayağı bir örnek lisp yazıp tektek tariflerini yaptım. Hala da yazıyorum
Anlamadığınız yerde de tekrar soru sorabilirsiniz. Yine açıklamaya çalışırım..

> 1 <