Orhan Toker
Y. Mimar (İTÜ)
Autodesk Yetkili Danışmanı
Programcı

  DERS.4 (command) fonksiyonu
Seviye: Başlangıç Kaynaklar: Autodesk, VisualLISP IDE Help file

 


 

Merhaba,

Bu derste (command) fonksiyonunu ele alacağım. Bildiğiniz gibi AutoLISP, Autocad için bir makro dili olmaktan çok daha öte bir dil olmasına karşın temelde Autocad'e scriptler yazmaktır. Eh biz de işe temelden başladığımıza göre, Autocad'e bir şeyler yaptırmanın ek kolay yolu olan (command) fonksiyonunu inceleyeceğiz.
(command) fonksiyonu Autocad'in komut satırına direk komut göndermek için kullanılır. (command) fonksiyonu, kullanacağınız Autocad komutuna bağlı olarak değişik tipte ve sayıda argüman kullanır. Açı, mesafe, nokta gibi veriler tırnak içinde verilebileceği gibi direkt sayı olarak da (command) fonksiyonunun argümanlarına pas edilebilir. Fonksiyona pas edeceğiniz boş bir dize "" Autocad komut satırında ENTER ya da SPACE ile aynı işi görecektir.
İstisna olarak (command) fonksiyonunda SKETCH komutunu ve Autocad komutu olarak tanımlanmış c:nnn lisp fonksiyonlarını kullanamazsınız.
Aşağıdaki örnek kod satırları (command) fonksiyonunun bir kaç kullanım şeklini gösterir.

(command "circle" "0,0" "3,3")
(command "thickness" 1)
(setq p1 '(1.0 1.0 3.0))
(setq rad 4.5)
(command "circle" p1 rad)

 

  Yabancı Dil Desteği
 

Tasarladığınız programın AutoCAD'in tüm diğer dillerdeki sürümlerinde çalışmasını istiyorsanız, (command) fonksiyonu ile Autocad komutlarını çağırırken alt çizgi (_) kullanmalısınız. Aşağıdaki satır buna örnektir.

(command "_line" pt1 pt2 pt3 "_c")

Bu bilgiye ek olarak, eğer kullanıcı tarafından yeniden tanımlanmış olma olasılığı olan Autocad komutlarından kaçınmak istiyorsanız nokta (.) karakterini kullanmalısınız. Her ikisini bir arada ya da ayrı ayrı kullanabilirsiniz.

(command "._line" pt1 pt2 pt3 "_c")
(command "_.line" pt1 pt2 pt3 "_c")
(command ".line" pt1 pt2 pt3 "c")

 

  Kullanıcı girişi için duraklama
 

Komutun icrası sırasında, nokta girme ya da sündürme gibi kullanıcıdan istenecek girişler için PAUSE değişkeni argüman olarak girilir. Bu menülerdeki ters bölü (\) sembolü ile aynıdır.

Bir örnekle açıklayalım:

(command "._circle" PAUSE 50.0)

Bu satırı komut satırına girdiğinizde Autocad çember komutuna girecek ve sizden çemberin merkezini girmeniz için duraklayacaktır. Siz herhangi bir nokta girişi yaptığınız anda yarıçapı 50 olan çemberi belirlediğiniz merkeze çizecektir.

Not: Eğer komut icrasını PAUSE ile duraklattıysanız, bu duraklama esnasında şeffaf komutları kullanabilirsiniz. Az önceki örnekte Autocad dairenin merkezini girmeniz için durakladığında 'zoom ya da 'pan şeffaf komutlarını kullanailirsiniz. Farenizin tekerleği dolayısıyal bu bilgi önemini yitirmiş olsa da yazmakta fayda gördüm.

Önemli: Eğer ATTRIBUTE ya da TEXT girişi için PAUSE kullandıysanız, Autocad sadece TEXTEVAL sistem değişkeni 0 değilse veri girişini bekler. TEXTEVAL 0 ise PAUSE duraksaması çalışmayacaktır.

 

  Seçme noktalarının (PICK POINTS) (command) fonksiyonuna pas edilmesi.
 

TRIM, EXTEND ve FILLET gibi komutlarda hem nesne seçimi hem de seçim noktasının belirlenmesi bir arada yapılır. Bunun gibi hem seçilen nesneyi hem de seçim noktası verisini aynı anda (command) fonksiyonuna pas etmek PAUSE argümanıyla mümkün olamaz. Bunun yerine bu verileri komuttan önce değişkenlere saklamak gerekir. Örnekte bunun yapılışını görüyorsunuz.

(command "._circle" "5,5" "2") ;daireyi çizer
(command "._line" "3,5" "7,5" "") ;çizgiyi çizer
(setq el (entlast)) ;son çizilen nesneyi el değişkenine saklar
(setq pt '(5 7)); seçim noktasını pt değişkenine saklar
(command "trim" el "" pt "") ;trim komutu icra edilir

Bu tip işlemler için dikkatli olmalısınız.

  • Pick point ve işlem yapılacak nesneler o anda model penceresinin içinde olması gerekir
  • Gerekirse "PICKBOX" sistem değişkeninin değerini biraz büyütebilirsiniz.

 

  Bu dersimiz bu kadar. Kendi kendinize örnekleri tekrarlamanızda yarar var.