1372826956:AAFe2Py65GSQkfGiRnXuOQ-eD9yXcwMv988

AutoLISP Alıştırması-Alanını Tanımlayarak Düzgün bir Poligon Yaratma

Site kullanıcılarından gelen yorumlardan anlıyorum ki, yayınladığım AutoLISP makalelerime çok ilgilisiniz ve daha fazla alıştırma yapmak istiyorsunuz. Önceki AutoLISP Kullanma-Değişkenler ve Kullanıcıdan Veri İsteme isimli makalemde AutoLISP’te değişkenler ve kullanıcıdan konusunu anlatmıştım. Bu makalemde ise, kullanıcıdan daha fazla veri isteme ve bu verileri matematiksel eşitlikte kullanmayı anlatacağım. Matematiksel denklem ile hesapladığımız sonucu AutoCAD’e nesne çizdirmek için kullanacağız.

AutoLISP’te Denklem Yazma

AutoLISP’te denklem yazma normalden biraz farklı olmakla birlikte anlaşılması o kadar da zor değildir.

Örneğin, şayet 2 + 5 işlemini yapmak istiyorsak, bunu aşağıdaki biçimde yazmamız gerekecektir:

(+ 2 5)

Haydi, bunu AutoCAD’in komut satırında deneyelim. Yukarıdaki satırı AutoCAD’in komut satırına yazın ve Enter tuşuna basın. Evet, AutoLISP komutlarını AutoCAD’de kullanabilirsiniz. Fakat yapmanız gereken ifadeyi doğru yazmaktır.

Şimdi başka bir şey deneyelim ve değişkenleri de işin içine katalım.

Aşağıdaki satırları tek tek AutoCAD’in komut satırına yazın ve her satırdan sonra Enter tuşuna basın:

(setq a 2)
(setq b 5)
(+ a b)

Ne mi yaptık?

  1. a değişkenine 2 değerini atadık.
  2. b değişkenine 5 değerini atadık.
  3. a değişkeni ile b değişkenini topladık.

Ayrıca aşağıdaki kodu kullanarak a değişkeni ile be değişkeninin toplam sonucunu c değişkenine atayabilirdik:

(setq c  (+ a b)

Bu c = a + b demektir.

O kadar da zor değilmiş değil mi? Şimdi poligon formülünü görelim:

Poligon Çizme Metodu

Alanını tanımlayarak poligonu nasıl çizebiliriz? Biraz araştırdım ve aşağıdaki şekilde gördüğünüz formülü buldum.

Sekil-01

Bu formüle göre şayet poligonun alanını ve kenar sayısını biliyorsak, apothem (iç yarıçap) uzunluğunu hesaplayabiliriz. Apothem (İç yarıçap) nedir? Aşağıdaki şekle bakın.

Sekil-02

Şayet poligonun apothem (iç yarıçap) uzunluğunu ve kenar sayısını bildiğimiz zaman, poligon nasıl çizilebilir? Tabiki AutoCAD’in POLYGON komutunu kullanarak. Poligonu dış teğet “circumscribed” metodunu kullanarak yaratırız.

Apothem (İç yarıçap) Uzunluğunu Hesaplama

Yukarıda birinci şekilde gördüğünüz formülü değiştirerek aşağıdaki hale getirmeliyiz:

Sekil-03

Formülümüzdeki Fonksiyonlar

Formülümüzde aşağıdaki fonksiyonları kullanacağız:

  1. Karekök: (sqrt a) biçiminde yazılır.
  2. Çarpma: (* a b) biçiminde yazılır.
  3. Bölme: (/ a b) biçiminde yazılır.
  4. Ang açısının Kosinüsü: (cos ang) biçiminde yazılır.
  5. Ang açısının Sinüsü: (sin ang) biçiminde yazılır.

Burada, a, b ve ang değişkenlerdir.

Kötü haber AutoLISP’te Tanjant (TAN) fonksiyonu olmamasıdır. Fakat bu sorunu çevresinden dolanarak halledebiliriz. Tanjant Sinüs / Kosinüs değil midir? O halde Tan (pi/N) ifadesi aşağıdaki gibi yazılabilir:

(setq ang (/ pi N))
(/ (sin ang) (cos ang))

Pi (matematikteki sabit sayı) AutoLISP’in yerleşik bir değişkenidir ve bunu direkt olarak kullanabiliriz.

AutoLISP’de kod yazarken sıraya riayetin yanı sıra komutları da bilmeniz gerekmektedir. Şayet kodu kendiniz yazmak istiyorsanız, buyurun önce bir deneyin. Bu sizin için AutoLISP’de matematiksel fonksiyonlara alışmanız için iyi bir alıştırma olacaktır. Benin yazdığım kodu tam olarak aşağıda bulacaksınız.

Ben a değişkenini alan ve n değişkenini poligonun kenar sayısı olarak kullandım. Ayrıca apt değişkenine apothem (iç yarıçap) uzunluğunu ve ang değişkenine (pi/n) işleminin sonucunu aktardım.

(setq ang (/ pi n))
(setq apt (sqrt (/ (/ a (/ (sin ang) (cos ang))) n)))

Veya yukarıdaki bu iki kod satırını aşağıdaki gibi tek satırda da yazabilirsiniz. Fakat biraz karmaşık görünecektir.

(setq apt (sqrt (/ (/ a (/ (sin(/ pi n)) (cos(/ pi n)))) n)))

Kullanıcıdan Veri İsteme

getpoint fonksiyonunu önceki makalelerimizde öğrenmiştik. Bu fonksiyonu kullanıcıdan bir noktayı tıklayarak seçmesi için kullanmıştık. Şimdi ise, üç kullanıcı verisine ihtiyacımız var. Bunlar:

  1. Poligonun kenar sayısı ( n )
  2. Poligonun alanı ( a )
  3. Poligonun merkez noktası
  4. Poligonun kenar sayısı bir tam sayı olmak zorundadır. 5 kenar sayısı olarak kabul edilemez değil mi? Tam sayı veri istekleri için, getint fonksiyonunu kullanırız.
  5. Alan değeri ondalık sayı olabileceği için, bir reel sayıdır. İşte bu reel sayı veri istekleri için, getreal fonksiyonunu kullanırız.
  6. Poligonun merkez noktası için getpoint fonksiyonunu kullandığımızı zaten biliyorsunuz.

Haydi deneyelim. AutoCAD‘de komut satırına (GETINT) yazın ve Enter tuşuna basın.

Bir tam sayı yazın ve Enter tuşuna basın. Girdiğiniz tam sayı geri dönecektir. Tekrar deneyin; ama bu sefer 3.2 gibi bir ondalık sayı girin. AutoCAD aşağıdaki uyarıyı verecektir:

Komut: “Command:” (getint)
3.2

Bir tam sayı girmelisiniz. “Requires an integer value.”

Doğru veri isteme fonksiyonunu kullanma olası hataları azaltacaktır.

Kodu Yazma

Artık kodumuzu yazmayı tamamlayabiliriz.

  1. Kullanıcıdan poligonun kenar sayısını ve poligon alanı verilerini istemeniz gerekmektedir.
  2. Apothem (İç yarıçap) uzunluğunu ve (pi/n) oranına eşit olan ang değişkeninin değerini hesaplamalısınız.
  3. Kullanıcıdan poligonun merkez noktasını belirlemesini istemelisiniz.
  4. Son olarak ta POLYGON komutunu çalıştırmalısınız.

Artık, programımız içerisinde kullanacağımız tüm verileri tamamladık. Kodu öncelikle kendinizin yazmanızı şiddetle tavsiye ediyorum. Daha sonra yazdığınız kodu benim yazdığım kod ile karşılaştırarak kontrol edebilirsiniz.

Benim yazdığım kod aşağıdadır. Şayet siz yazdığınız kodda sorunlar yaşıyorsanız, aşağıdaki kodu kopyalayıp kullanabilirsiniz:

; Bu LISP Poligon alanını ve kenar sayısını tanımlayarak düzgün bir poligon yaratacaktır.
; Created by Sertan Türkan
; Websitesi: www.autocadbeyni.com

(defun c:papt (/ a n apt ptloc)
(setq n (getint ”
POLİGONUN KENAR SAYISINI GİRİN: “))
(setq a (getreal ”
İSTENEN POLİGON ALANINI GİRİN: “))
(setq ang (/ pi n))
(setq apt (sqrt (/ (/ a (/ (sin ang) (cos ang))) n))) ;bu satır poligonun içsel çemberinin apothem (iç yarıçap) uzunluğunu hesaplar.
(setq ptloc (getpoint ”
POLİGONUN MERKEZ NOKTASINI BELİRLEYİN: “))
(command “_POLYGON” n ptloc “C” apt)
)

Şayet isterseniz, programın .lsp dosyasını burayı tıklayarak indirebilirsiniz. Programı çalıştırmak için, programı AutoCAD’e yükleyin ve komut satırına PAPT yazarak Enter tuşuna basın.

Hakkında Sertan Türkan

AutoCAD Beyni

Bunu da Kontrol edin

2.1.3 – Bodrum Kat – İç Duvarlar

Bodrum katının dış ve iç duvarlarının son düzeni, aşağıdaki bodrum katının çiziminde gördüğünüz gibi olacaktır …

Bir cevap yazın

This site uses Akismet to reduce spam. Learn how your comment data is processed.