Reklam ver...

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ı
e-mail  

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.

Fig.1
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)

Fig.2
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.

Fig.3
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.

Fig.4
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.

Fig.5
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 …
Fig.6
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: , ,

Rastgele bir yazı

 Votes | Average: 0 out of 5 Votes | Average: 0 out of 5 Votes | Average: 0 out of 5 Votes | Average: 0 out of 5 Votes | Average: 0 out of 5 (Henüz oy yok)
Loading ... Loading ...

Yorum bırak