Visual Lisp: AutoLISP ile İki Nokta Arasındaki Eğimi Ölçmek
![]() |
Yazar | Muharrem Koçyiğit |
| Mesleği | Makine Teknikeri | |
| AutoCAD, AutoLISP, Visual LISP | ||
| Prosteel Uzmanı | ||
Merhaba arkadaşlar,
Erhan beyin bundan önce yayınladığı “İki Nokta Arasındaki Eğimi Ölçme” programını Visual Lisp olarak anlatmak istiyorum. Ana Programın ismi SlopeX olup tüm alt fonksiyonlara ax: öneki verilmiştir. Bu bir nevi diğer Lisp fonksiyonlardan ayırt etmek için kullandığım yöntemdir. Tabiki siz istediğiniz şekilde tanımlıyabilirsiniz.
![]() |
| Kod.1 - Ana fonksiyon “ C:SlopeX“ |
Ax:Entsel fonksiyonu (Kod.2) nesne seçiminde kolaylık sağlar ve bir defada bir tek nesne seçer. Eğer seçim başarıyla gercekliştiyse program sonucunda iki elemanlı bir liste döndürülür. Listenin birinci elemanı, seçilen nesnenin kendisi (VLA-OBJECT) olup ikinci elemanı ise nesnenin seçildiği noktadır (Safearray). Nesne seçilmedıği taktirde döngü değerini nil olarak verir (not in list = yani listede yok, bir şey seçemediniz).
Örneğin:
(#<VLA-OBJECT IAcadLine 014fe064> #<safearray...>)
Safearay bir Visual Lisp Veri Tipidir. Amacı bir dizin olarak bilgi depolamak. Bu dizini yani seçtiğiniz noktayı (X Y Z) bir listeye çevirmek istiyorsanız (vlax-safearray->list) fonksiyonu kullanıp isteğiniz işlemi yapabilirsiniz.
VLA-OBJECT veri tipiyle ilgili bir önce yazdığım konuyu “Nesne özellikleri ve metodları “ okumanızı tavsiye ederim.
Birçok alt fonksiyonların 1. Parametresi a:util olarak verilmiştir. VisuaLisp de bulunan AcadUtility sınıfını tanımlar. Türkçe’de Araç Kutusu olarak çevrilen bu sınıf birçok yardımcı fonksiyonlar barındırmakta (VBA class name: AcadUtility)
![]() |
Kod.2 - ax:EntSel fonksiyonu bir tek nesne seçiminde kolaylık sağlar |
Kullanıcının tek bir nokta girmesini istediğinizde (ax:GetPoint) fonksiyonunu (Kod.3) kullanabilirsiniz.
![]() |
Kod.3 - ax:GetPoint fonksiyonu bir tek nokta girmenizde kolaylık sağlar |
ax:Get:Object fonksiyonu (Kod.4) ile tanımladığınız bir nesneyi girmenize yardımcı olur. Bu isteğinizi programın 2.Parametresi olan a:oName değerini örnek verecek olursak “AcDbLine”, “AcDbCircle” yada “AcDbArc” olarak verebilirsiniz.
While döngüsü kullanıcıdan doğru bir seçim yapana kadar girmesini bekler.
3.Parametre a:msg ise komut satırında seçim yapmak için kullanıcıya verilen mesajdır. Örnek olarak “\nSelect a CIRCLE:” kullanabilirsiniz. Böylelikle kullanıcıya bir daire seçtirmek istediğimizi anlatmış oluyoruz.
![]() |
Kod.4 - ax:Get:Object fonksiyonu nesne seçiminde kolaylık sağlar |
ax:CalcSlope fonksiyonu (Kod.5) girilen verilerle elde ettiği iki noktanın eğimini hesaplar.
![]() |
Kod.5 - ax:CalcSlope fonksiyonu eğimi hesaplar |
ax:ShowResult fonksiyonu girilen verileri ekranda gösterir.
- Ekranda gösterdiğiniz noktaların yada çizginin başlangıç ve bitiş noktası,
- İki nokta arasındaki mesafe,
- XY düzleminde X ekseni ile yaptığı açı, doğrunun eğimi …
![]() |
Kod.6 - ax:ShowResult fonksiyonu eğimle ilgili verileri gösterir |
Hoşça kalın,
İlgili Yazılar: Visual Lisp hakkında şimdiye kadar yazılan konular…, AutoLISP ile yazılan konular…, AutoLISP uygulamalarını otomatik yüklemek
Technorati Tags: AutoLISP, Visual LISP, AutoCAD Günlüğü
Benzer Yazılar







