1372826956:AAFe2Py65GSQkfGiRnXuOQ-eD9yXcwMv988

En İyi AutoLISP Programlama Teknikleri

AutoLISP rutinleri oluştururken, programcı sadece doğru sözdizimini değil, aynı zamanda anlaşılması kolay, hataların telafisinin, hata ayıklamasının ve kolay olarak yapılabileceği bir program yazması gerektiğini aklından çıkartmamalıdır.

Biçimlendirme “Formatting”

Kodu yazarken elle biçimlendirme yapabilirsiniz. Ancak Visual LISP, yardımcı biçimlendirme araçlarını içermektedir. Netlik sağlamak ve parantezleri izlemenize yardımcı olmak için, gereken yerlerde otomatik olarak sekmeler ve boşluklar eklerler. Biçim DüzenleFormat Edit” penceresini kullanabilir veya Biçim Seç “Format Selection” aracını kullanarak seçim yapabilirsiniz.

AutoLISP, boşlukları ve satırbaşı iadelerini yok sayar, bu yüzden yönergeyi daha açık hale getirmek için, biçimlendirmeler “format” kullanın.

Biçimlendirilmemiş Yönerge:

(defun C:TRIANGLE ()
(setq PT1 (getpoint “Pick a Point: “) 
PT2 (getpoint “Pick another point: “) 
PT3 (list (car PT1) (cadr PT2))) 
(command “line” PT1 PT2 PT3 “c”))

Biçimlendirilmiş Yönerge:

Biçimlendirme seçeneklerini Araçlar “Tools” menüsü içerisinde > Ortam Seçenekleri “Environment Options“ altında > Visual LISP Biçim Seçenekleri “Visual LISP Format Options“ komutuyla ayarlayabilirsiniz.

Açıklama

Açıklamalar, kodun anlaşılması için, size ve dosyayı okuyan herkese kod ilgili yardımcı olur. Bir dosyaya açıklama eklemek için, herhangi bir satırın önünde bir noktalı virgül (;) işareti kullanın. O satırda noktalı virgül (;) işaretinin sağındaki her şey göz ardı edilir.

  • Yönergenin başlangıcında, dosya adını, fonksiyonun ne yaptığını anlatan, yazarın kim olduğunu, yazım tarihini ve sürümü bildiren bir açıklama eklediğinizden emin olun.
  • Ayrıca, uzun fonksiyonları aşamalara ayırmak ve her bir aşamanın ne yaptığını açıklamak da isteyebilirsiniz.
  • Sadece tek bir noktalı virgül (;) yeterli olsa da, bazı insanlar görünüş için iki veya üç noktalı virgülü (;) tercih ederler. Visual LISP, girintisiz boş bir satırdan başlayan herhangi bir açıklamanın önüne üç noktalı virgül (;), yeni satır girintili hale getirildiği zaman, iki noktalı virgül ve bir sütun konumuna ya da bir kapanış parantezinden sonra bir girinti eklendiğinde ise, bir noktalı virgül (;) ekler.
  • Kapanış parantezinden sonra açıklamaları ayrı bir satırda otomatik olarak eklemek için, Araçlar “Tools” menüsü altında > Ortam Seçenekleri “Environment Options“ içerisinde> Visual LISP Format SeçenekleriVisual LISP Format Options” altındaki iletişim kutusundaki Form kapanış yorumu yerleştir “Insert form-closing comment” işaretleme kutusunu işaretleyin.

Açıklama Bloğu “Comment Block”/Açıklama Bloğu Değil “Uncomment Block”

Bu araçları kullanmak için, açıklama olarak biçimlendirmek veya açıklama biçimini kaldırmak istediğiniz satırları seçmeniz yeterlidir. Açıklama BloğuComment Block” aracı, seçilen satırların başına noktalı virgül (;) ekler; Açıklama Bloğu Değil “Uncomment Block” aracı, seçilen satırların başındaki noktalı virgülleri (;) kaldırır.

Örneğin, rutininizin bir bölümünü AutoCAD‘de test etmek isteyebilirsiniz. İstenmeyen kısmı seçerek vurgulayabilir ve bir butona tıklayarak o bölümü açıklama haline getirebilirsiniz. O bölümü de test etmeye hazır olduğunuzda, tekrar seçerek vurgulayın ve Açıklama Bloğu Değil “Uncomment Block” araç düğmesine basın.

Açıklama Örneği

;;;Bu program hipotenüsün iki uç noktasını esas alarak
;;;üçgen çizer.
;;;Mayıs 17, 2017

(defun C:TRIANGLE ()
(setq PT1 (getpoint “Bir noktayı tıklayarak seçin: “)
          PT2 (getpoint “Diğer noktayı tıklayarak seçin: “) 
          PT3 (list
                         (car PT1)
                         (cadr PT2) )
                   ;end list
) ;end setq
(command “line” PT1 PT2 PT3 “c”)
) ;end defun

İsimlendirme

  • Anlamlı sembol isimlerini kullanın. PT1, ReferencePoint, SCALE_FACTOR gibi değerlerle ilgili bir ad kullanın.
  • Şayet ilk birkaç harfi yazdığınızda Ctrl + Boşluk tuşlarına basarsanız, Visual LISP bir fonksiyon veya sembol ismini tamamlayacaktır.
  • Semboller büyük/ küçük harfe duyarlı değildir, ancak büyük harf kullanımı, Visual LISP’de olmadığınızda semboller ve fonksiyonlar arasında ayrım yapmanıza yardımcı olabilir.
  • PI, T veya ANGLE gibi herhangi bir fonksiyon adını sembol adı olarak kullanmamanız gerektiğini unutmayın!
  • LISP yönergeleriniz için anlaşılır dosya adları verin. Örneğin, LSP değil de DATESTAMP.LSP adını kullanın.

Veri isteme

(iniget) ve (getkword) fonksiyonları gibi hata kontrol fonksiyonlarını kullanın. Uygunsuz veri girişi olabileceğini hep aklınızda tutun. Yönergeyi mümkün olduğunca kullanımı kolay hale getirin.

Veri istemlerini AutoCAD’in veri istemlerine benzer şekilde yazın. Bu, LISP yönergeniz ile AutoCAD arasında daha akıcı bir arayüz oluşturur. Örneğin: Bir renk seçin: Kırmızı veya [Mavi/Sarı/Yeşil]: Bu tarz veri isteminin AutoCAD’in 2000 sürümünden sonra kullanılmaya başlayan yeni veri isteme stili olduğunu unutmayın.

Lokal Değişkenleri Ayarlama

Bir başka iyi netlik uygulaması, sembol olarak kullandığınız değişkenlerin izini sürdürebilmeniz ve başka bir yönergeyi etkileme olasılığına bu değişkenleri karşı AutoCAD‘de aktif olarak bırakmadığınızdan emin olmanızdır. Bu işlem değişkenleri yerelleştirmek (lokalize etmek) olarak adlandırılır.

AutoCAD oturumunda kullanılan tüm değişkenler atom listesinde saklanır. Bu liste, tüm AutoLISP fonksiyon adlarını da içerir.

 (defun) fonksiyonu Seçenekleri

Bir değişken, belirli bir fonksiyona özel olarak bildirilebilir. Bu yerel ”lokal” değişkenler, (defun) argüman listesiyle aynı parantez içinde bildirilir:

(defun fonksiyon_ismi ([argümanlar / yerel değişkenler])

İsteğe bağlı argümanlar, çizim oturumunda kalıcı olarak atanmasını istediğiniz değişkenlerdir. Bunlar, başka bir AutoLISP yordamında kullanacağınız sembol bilgileri olabilir ya da bunlar fonksiyonun çalışması için sağlamanız gereken değişkenlerdir.

İsteğe bağlı yerel değişkenler seti, yönerge tamamlandıktan sonra, yerel değişkenlerin adını ve değerini bir kenara bırakır. Atom listesine eklenmezler ve sadece fonksiyon çalışırken bellekte kalırlar.

  • Argümanlar ve yerel değişkenler bbölü işareti (/) ile ayrılırlar.
  • Yerel değişkenler, yalnızca yönerge yürütülürken bellekte kalır. Bu, daha uzun ve daha net değişken isimlerinin kullanılmasına izin verir.
  • Mevcut değişkenleri kaldırmak için AutoCAD‘den çıkıp yeniden başlatmanız gerekebilir.

 (atoms-family) Fonksiyonu

(atoms-family) fonksiyonu, atom listesi olarak adlandırılan, geçerli olarak tanımlanmış tüm simgelerin bir listesini döndürür. Bu şekilde çizim oturumunda hangi sembollerin tanımlandığını bilebilirsiniz.

(atoms-family format [symbol])

Biçimlendirme “Format” argümanı, sembollerin semboller veya dizgiler olarak döndürülüp döndürülmeyeceğini belirtir: 0, sembollerin bir listesini döndürür ve 1, dizelere dönüştürülen sembollerin listesini döndürür.

İsteğe bağlı sembol argümanı, sembol listesindeki her sembolün mevcut düzenleme oturumunda mevcut olup olmadığını kontrol etmek için kullanılır. Şayet sembol varsa, argüman bir sembol ismini geri döndürür; aksi halde sıfır verir.

Command: (atoms-family 1 ‘(“CAR”))
(“CAR”)

Örnek: Lokalleştirilmiş Değişkenler

;;;MATRIX.LSP
;;;C:MATRIX – Toplam satır ve sütun uzunluklarına göre
;;; dikdörtgensel dizi yaratmak için bir fonksiyon.
(defun c:MATRIX ( / ROW-NUMBER COL-NUMBER STARTPT TOTAL-ROW
TOTAL-COL ROW-DIST COL-DIST SS1)
(command “graphscr”)
(initget (+ 1 2 4)
(setq ROW-NUMBER (getint “Satır sayısı (—): “))
(initget (+ 1 2 4)
(setq COL-NUMBER (getint “Sütün sayısı (|||): “))
(setq STARTPT (getpoint “Başlangıç noktası: “))
(initget (+ 1 2)
(setq TOTAL-ROW (getdist STARTPT “\nToplam satır uzunluğu: “))
(initget (+ 1 2)
(setq TOTAL-COL (getdist STARTPT “\nToplam sütun uzunluğu: “))
(setq ROW-DIST (/ TOTAL-ROW (1- ROW-NUMBER)))
(setq COL-DIST (/ TOTAL-COL (1- COL-NUMBER)))
(setq SS1 (ssget))
(command “array” SS1 “” “r” ROW-NUMBER COL-NUMBER ROW-DIST COL-DIST) (princ)
); close defun

 

Hakkında Sertan Türkan

AutoCAD Beyni

Bunu da Kontrol edin

Revitte Bir Bölge Planı “Plan Region” Oluşturma

Revit’te plan görünüşünün geri kalanı için kullanılan kesme düzleminden farklı bir yükseklikte bir kesme düzlemi …

Bir cevap yazın

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

Yardıma mı ihtiyacınız var? Chat with us
Bir görüşme başlatmak için lütfen önce gizlilik politikamızı kabul edin.