Autolisp Yazarak AutoCAD için Özel Komutlar Yaratın

AutoLISP AutoCAD’e güçlü programlama yetenekleri sunmaktadır. Fakat AutoLISP kullanabilmek için programcı olmanız gerekmiyor.

İşinizi daha hızlı yapmanızı sağlayacak komutları oldukça basit şekilde yaratabilirsiniz. Bu makalede, çizim alanında istenilen yere istenen yarıçapta kırmızı bir çember çizen özel bir komut yaratacaksınız. Bu kızmızı çemberi çiziminizde düzeltme yapılması gereken yerleri çember içine almak için kullanabilirsiniz.

  1. Windows’un Notepad programını açın.
  2. Boş notepad dosyasına aşağıdakileri yazın:

(defun c:redcircle (/ center pt-on-circumference)
(terpri)
(setq center (getpoint “Kırmızı Çemberin Merkezini belirleyin:”))
(terpri)
(setq pt-on-circumference (getpoint center “Çemberin üzerinde olacak bir noktaya tıklayın:”))
(command “_circle” center pt-on-circumference)
(command “_chprop” “_last” “” “_color” “red” “”)
)

Not: Yukarıda yazdığımız program kodunda Türkçe karakter kullanamayacağımız için,

komut kısımları İingilizce sadece tırnak arasında kalan metin kısımlarında Türkçe kullanıldığına dikkat edin!

Uygulama Yükle/Kaldır "Aplication Load/Unload

  1. Bu notepad dosyasını ismini kirmizi_cember.lsp vererek (dikkat edin uzantısı notepad programının ön tanımlı kaydetme uzantısı olan  .txt olmayacak) AutoCAD destek dosyalar araştırma hattında “AutoCAD Support File search path” bulunan bir klasöre kaydedin.
  2. AutoCAD’de,  Yönet “Manage” sekmesini seçin> Uygulamalar “Applications” Paneli> Uygulama Yükle “Load Application” (APPLOAD komutu) bu komut Uygulama Yükle / Kaldır iletişim kutusunu açacaktır.
  3. redcircle.lsp dosyasını seçin ve Yükle “Load” düğmesine tıklayın. İletişim kutusunun en altında redcirle.lsp başarı ile yüklendi “redcirle.lsp successfully loaded” mesajını görmeniz gerekir.
  4. Kapat “Close” düğmesine tıklayın.
  5. Komut satırına redcircle yazıp Enter tuşuna basın.
  6. Kırmızı çemberin merkezini belirleyin: “Specify center of red circle:” veri istemi (uyarısı) geldiğinde, çizim alanında çemberin merkez noktası olmasını istediğiniz yere tıklayın.
  7. Çember üzerinde bir noktaya tıklayın: “Pick a point on the circumference:” veri istemi (uyarısı) geldiğinde, yarıçapı belirleyebilmek için, çizilecek kırmızı çemberin üzerinde olmasını istediğiniz bir noktaya tıklayın. (program ilk tıkladığınız nokta ile bu son tıkladığınız nokta arasındaki uzunluğu hesaplayacak ve bu değeri yarıçap olarak kullanacaktır.)

AutoCAD çemberi çizecek ve rengini hemen kırmızı yapacaktır.

Kırmızı Çember "Redcircle"

Bu Autolisp Nasıl Çalışmakta?

İşte satır satır açıklaması:

(defun c:redcircle (/ center pt-on-circumference):  AutoLISP’de herşey parantezler arasında tanımlanır. Bu yüzden aç parantez işareti ile başlıyoruz. (parantezi yazdığımız kodun en sonunda kapatacağız.) defun yazısından sonra c: yazıyoruz bu tanım c:dan sonra yazılanın kodu çalıştıracak komut olduğunu tanımlıyor. Komut isminden sonra parantez açıyoruz ve tanımlayacağımız değişkenleri yazıyoruz. Bu örnekte, değişkenlerimiz merkez “center” ve çember üzerinde bir nokta “pt-on-circumference”. Parantezler arasında tanımlanan değişkenleri yazarken bölü(/) ve boşluk tam yerinde olmalıdır yani aç parantezden hemen sonra bölü (/) işareti ve hemen sonra bir boşluk koyduktan sonra değişkenlerimizin isimlerini yazmalıyız ve ayrıca değişkenler arasında da bir boşluk olmalıdır.

(terpri): Bu fonksiyon bir sonraki satırda gelecek olan veri isteminin AutoCAD komut satırında bir satır sonraya yazılmasını böylece komut satırında rahatça okuyabilmemizi sağlamakta.

(setq center (getpoint “Specify center of red circle:”)): setq fonksiyonu bir değişken tanımladığınızı anlatmakta olup, bu değişkenin isminin center olacağını belirlemektedir. Daha sonra kullandığımız  getpoint fonksiyonu için aç parantez (() işareti center değişkenine aktarılacak değerin kullanıcı tarafından tanımlanacağını belirlemektedir. Daha sonra iki tırnak işareti (“) arasında yazanlar ne tür bir veri istendiğini açıklamak içindir. İstediğimiz herhangi bir şey yazabiliriz. Fakat kullanıcıya açıklayıcı notlar yazmak daha doğru olacaktır. Daha sonra ise açmış olduğumuz tüm parantezleri kapatmak zorundayız.

(setq pt-on-circumference (getpoint center “Pick a point on the circumference:”)): Burada tekrar, you’re pt-on-circumference isimli bir değişken tanımlıyoruz ve noktayı kullanıcının tanımlamasını istiyoruz. Burada açık olmayan tek kısım getpoint fonksiyonundan sonra neden center değişkenini koyduğumuz sanırım. Fakat bunu yazmak zorundayız, çünkü çember üzerindeki bir nokta ile merkez nokta arasında bir uzunluk hesaplatmalıyız ki AutoCAD bu uzunluğu yarı çap olarak kullanabilsin.

 (command “_circle” center pt-on-circumference): command fonksiyonunu kullanarak AutoCAD’in normal komutlarına ulaşım sağlıyoruz. Circle dan önce koyduğumuz alt çizgi (_) işareti gerekli olmamakla birlikte adres dönüştürmeye imkan sağlıyor. Normal komut ismini iki tırnak işareti arasına yazabirsiniz. Daha sonra AutoCAD’e çemberi çizebilmesi için gerekli bilgileri veriyoruz yani çemberin merkez noktasını ve yarıçap değerini AutoCAD’e söylüyoruz. Tabiki bu işi değişkenleri kullanarak yapıyoruz. İlk tıkladığımız noktayı center değişkenine aktarmıştık, ikinci tıkladığımız nokta da çember üzerinde idi  ve pt-on-circumference değişkenine aktarılmıştı.

(command “_chprop” “_last” “” “_color” “red” “”): Burada CHPROP komutunu kullanarak çemberin rengini kırmızı yapıyoruz. Bu komut AutoLISP kodları için gerçekten muhteşem bir komut, çünkü nesnelerde istediğimiz değişiklikleri şeritten veya iletişim kutularından yapmak yerine komut satırını kullanarak bu değişiklikleri yapmamıza imkan sağlıyor. Sonra, yaratılan son nesneyi tanımlıyoruz. 2 boş tırnak işareti seçimi sonlandırıyor ve daha sonra istediğimiz rengi kırmızı “red” olarak tanımlıyoruz. En son koyduğumuz 2 boş tırnak işareti komutu sonlandırıyor.

En son satırdaki parantez kapat ( ) ) işareti: İlk açtığımız parantezi kapatıyor ve kodu sonlandırıyor.