AutoLISP ile İki Nokta Arasındaki Eğimi Ölçmek
![]() |
Yazar | Erhan Toker |
| Mesleği | Y. Mimar İTÜ | |
| Autodesk Yetkili Danışmanı | ||
| web | Programcı | |
1/3 Eğimli çatıyı 3 boyutlu çizmek yazısı ile basit ancak kullanışlı bir 3 boyut tekniği anlatmıştık. Bu yazımla da LISP meraklılarına iki nokta arasındaki eğimi nasıl ölçeceğimizi anlatacağım. Yazıya başlamadan önce bu derste kullanacağımız LISP dosyasının isminin tal_slope.lsp olduğunu, ve içinde kullanılan bazı fonksiyonları daha önce anlattığımız için tekrar açıklamayacağımızı belirtmek isterim.
İlk olarak hızlıca (ut-get-object) fonksiyonundan bahsedeceğiz ( Şekil 1 ).
Şekil 1
Bu fonksiyonun 1.parametresi olan p:str:otype seçtirmek istediğiniz nesnenin tipidir ve “LINE”, “CIRCLE” gibi DXF isimlerinden birini kullanabilirsiniz. 2. parametre p:str:prompt ise komut satırında seçim yapmak için kullanıcıya verilen mesajdır. Örnek olarak “\nSelect a LINE:” kullanabilirsiniz. Böylelikle kullanıcıya bir çizgi seçtirmek istediğimizi anlatmış oluyoruz. Eğer kullanıcı belirlediğimiz listeyi seçerse fonksiyon o nensenin DXF listesini döndürür. Şimdi bu fonksiyonu kullanmak üzere bir kenara koyalım ve ana fonksiyonumuzu incelemeye başlayalım ( Şekil 2 ).
Şekil 2
Tanımlamada gördüğünüz gibi komutumuzun ismi SLOPE olacak. (get_sys_vars) birkaç tane sistem değişkenini saklar ve (set_sys_vars) ta CMDECHO, OSNAP gibi sistem değişkenlerini komut işleyişine göre ayarlar. 3. satırda ise hata ayıklama rutinimizi ayarlayarak devam ediyoruz.
Seçilen iki nokta arasındaki eğimi bulmak için, program tasarımcısı olarak iki metod önereceğiz. Birincisi iki nokta seçmek, ikincisi ise bir çizgi seçerek bu çizginin iki noktasını kullanmak. Bu sebeple, AutoCAD komut satırı yapısından faydalanarak nokta alma fonksiyonunu seçenekli kullanacağız ve kullanıcı isterse seçimini LINE olarak düzeltebilecek ( Şekil 3 ).

Şekil 3
(initget) fonksiyonu ile seçeneğe bağlı olarak nokta yerine “Line” cevabı verilebileceğini ayarladıktan sonra, (getpoint) fonksiyonuna “\nFirst point or [Line]: “ iletisini geçiyoruz. Bu sayede kullanıcı “L” seçimi ya da ENTER tuşuna basma seçimini yaparsa p1 değişkeni “Line” ya da nil değerini alacaktır. Kullanıcı bir çizgi seçerek devam etmek isterse ( true ) (ut-get-object) ile bir çizgi seçtirip DXF listesinden başlangıç ve bitiş noktalarını ( 10 ve 11 ) p1, ve p2 ye yükleriz. Eğer kullanıcı ilk soruya bir nokta seçerek cevap vermişse p1 zaten ilk seçtiği nokta olacaktır ve ( false ) bölümünde kullanıcıya ikinci nokta seçtirilecektir. Bu değer de p2 ye yerleştirilecektir. Artık elimizde iki adet 3 boyutlu nokta var. Şimdi ihtimallerimiz şunlar, bu iki nokta yer düzleminde olabilir ( p1.z = p2.z ) ya da Z koordinatları farklı olabilir. Eğer her iki nokta da yer düzleminde ise Y koordinatları ile diğer durumda da Z koordinatları ile hesap yapacağız ( Şekil 4 ).
Şekil 4
Gördüğünüz gibi önce tüm koordinat bileşenlerini x, y, z olarak ayırıyoruz ve buna göre hesaplarımızı tamamlıyoruz. Daha sonraki aşamada ise eğimi ekrana yazdırıyoruz ( Şekil 5 ).
Şekil 5
s1 değişkeninin Şekil 4’te duruma göre “3D” ya da “XY plane” olarak düzenlendiğine dikkat ediniz. Son olarak değişkenlerimizi yerine koyup, hata ayıklama fonksiyonunu başlangıç durumuna getiriyoruz ( Şekil 6 ).
Şekil 6
tal_slope.lsp dosyasını yüklediğinizde SLOPE komutu hazır olacak ve çalıştırdığınızda şu aşamalardan geçeceksiniz:
Command : SLOPE
First point or [Line]: L
Select a line:
The slope is %57.63 in XY plane
Technorati Tags: AutoLISP, AutoCAD, 3B
İlgili yazılar : 1/3 Eğimli çatıyı 3 boyutlu çizmek, AutoLISP Uygulamalarını Otomatik Yüklemek, AutoLISP Öğreticisi
Benzer Yazılar



26 June 2007, Tuesday 22:53
bu slope liispi eğimi yanlış mı veriyor acaba?
yoksa ben mi yanlış ölçüyorum… bence biyerde bi sorun var gibi…