12 Eylül 2007 Çarşamba

Çok kullanılan autolisp komutları:

(prompt);
ekranın mesaj kısmına yazı yazmak için kullanılır. İfade formatı şu şekildedir:

(prompt) "yazı") örneğin (prompt "Bir nokta seç")

(prompt) fonksiyonu ile ayni işlem gören yani ekrana yazı yaıan (princ), (prin1) ve (print) fonksiyonları vardır. (princ) ve (prin1), yazıları tırnak içine alırlar; (print) ise yazıdan sonra boşluk bırakmaktadır.

(getpoint);
bir nokta seçilmesini ister. Nokta seçilinceye kadar ekranda hiç bir şey olmaz. Ancak Ekranda bir nokta gösterildiğinde, noktanın koordinatları mesaj bölgesinde görülür. Komut (setq) ile kullandığında, seçilen noktanın koordinatları (setq) ile belirlenen değişkene atanır; ayrıca ifadeye bir de mesaj eklenebilir. Örneğin:

(setq a (getpoint "Birinci noktayı seç"))

ifadede Birinci noktayı seç mesajı komut bölgesinde görülür ve nokta seçildikten sonra, noktanın koordinatları a değişkenine atanır. Bu şekilde noktanın koordinatları a değişkeninde saklanmış olur. Şöyleki Command: mesajına !a ile yanıt verilirse, noktanın koordinatları mesaj bölgesinde görünür.

(command);
tüm AutoCAD komutlarının kullanma imkanını sağlar; ayrıca takip eden değişkenler komuta aittir. Örneğin yukarıda b maddesindeki ifade ile Birinci noktanın koordinatları a değişkeninde saklanmış olsun. ikinci noktanın koordinatları aşağıdaki ifadeyle:

(setq b (getpoint "İkinci noktayı seç"))

b değişkenine saklansın. Bu durumda:

(command "line" a b)

ifadesi ile yukardaki mesajlarla koordinatları belli olan a ve b noktaları arasında bir çizgi çizilir. Çizgi çizildikten sonra line (çizgi) komutu geçerli kalır. Bu komutu bitirmek için son noktadan sonra, örneğin (command "line" a b "") şeklinde iki çift tırnak yazılır. Çizgi sadece iki nokta arasında değil, koordinaları bilinen bir çok nokta arasında çizilebilir; ayrıca "c" ile çizgi kapatılabilir. Örneğin:

(command "line" a b c d "c")

ifadeyle dört kenarlı bir çizim oluşturulur.

(getcorner);
(getpoint) fonksiyonuna benzemekle beraber esasen seçilen iki nokta arasında bir dikdörtgen oluşturur. Burada ilk nokta daha önce seçilir veya bir değişkene atanır ve ancak ikinci noktanın seçiminde (getcorner) kullanılır; bu durumda kursor ikinci noktaya hareket ettirildiğinde dikdörtgen lastik band şeklinde görünür. İfadeler şöyledir:

(setq pt1 (getpoint "Bir nokta seç"))
(setq pt2 (getcorner pt1 "başka bir nokta seç"))

(getreal);
bir a değişkenine klavyeden gerçek sayı bir değer atanmasını sağlar. İfade:

(setq a (getreal "Bir sayı gir"))

olup, Bir sayı gir mesajı göründükten sonra sayı girilir.

(getdist);
bir uzaklığı sayı olarak girmek veya ekranda iki nokta göstererek, verme imkanını sağlar. İfade şöyledir:

(setq a (getdist "Yükseklik gir"))

(getstring);
bir yazı girilmesini sağlar. İfade:

(setq a (getstring T "Yazı gir"))
şeklindedir. Burada Yazı gir mesajına bir yazı girilir ve daha sonra !a ile yazı tekrar mesaj bölümünde görülür. Buradaki T , dizgi içinde boşluk kullanılabileceği anlamına gelir. T yazılmadığı zaman girilen yazı içinde boşluk kullanılamaz.

(angle);
iki nokta arasındaki açı değerini ölçer. Burada önce noktalar belirlenir ve sonra açı ölçme ifadesi yazılır. İfadeler şöyledir:

(setq pnt1 (getpoint "Bir nokta seç"))
(setq pnt2 (getpoint "İkinci noktayı seç"))
(setq a (angle pnt1 pnt2))
(dtr a)

Burada pnt1 ile pnt2 noktalar arasındaki açı radyan olarak a değişkenine atanır; son ifadede, (dtr) programı yüklü ise, açıyı radyandan dereceye çevirir. Açının değerini görmek için !a girilir.

(distance);
iki nokta arasında uzaklığı ölçer; burada da ilkin noktaların belirlenmesi gerekir. Uzaklık ölçme ifadesi şöyledir:

(setq d (distance pnt1 pnt2))

(polar);
bir noktanın polar olarak, yani uzunluk ve açıya bağlı olarak koordinatlarının verilmesini sağlar. İfade şöyledir:

(setq a (polar pnt1 ang1 dst1))

(getangle), (getorient);
her iki fonksiyon iki nokta göstererek bir açının bulunmasını sağlarlar. İfade:

(setq a (getangle "Açıyı seç"))

şeklindedir. (getorient) her zaman 0 derece olarak East (Doğu); (getangle) ise 0 olarak güncel yönünü kabul etmektedir. Örneğin 0‘ın güncel yönü North (Kuzey) ise bunu alır. Bu fonksiyonda açılar klavyeden de girilebilir. Ancak açı derece olarak belirlenmişse, bu otomatik şekilde radyan olarak saklanır

(setvar);
AutoCAD'in Setvar komutu içinde bulunan sistem değişikliklerini ayarlar. İfade şöyledir:

(setvar "orthomode 1")

Kenetleme oluşturmak için:

(setvar "osmode" n)

ifadesi kullanılır. Burada n kenetleme şekline bağlı olan ve aşağıda verilen bir sayıdır.

Center 4 Endpoint 1 İnsert 64 Intersection 32
Midpoint 2 Nearest 512 Node 8 Perpend 128
Quadrant 16 Tangent 256 None 0

(ssget),
(entsel) fonksiyonları nesnelerin seçmesini sağlar. (entsel) bir defada bir tek nesne seçer; (ssget), Window (pencere) ve Crossing (kesişme) dahil olmak üzere çeşitli seçme yöntemlerini kullanarak bir defada bir nesne kümesi seçebilir. Pencere için ifade:

(setq a (ssget "W" pnt1 pnt2))

şeklindedir; kesişme kullanıldığı durumda W yerine C yazılır. Bu şekilde a değişkenine atanan ve adı olan bir seçim kümesi meydana getirilmiş olur. Bundan sonra bu kümeye nesne ile ilgili veriler dahil edilebilir. Bilindiği gibi AutoCAD'de her nesnenin entity type (nesne tipi), layer (tabaka), color (renk) vb. gibi oldukça geniş bir veri tabanı vardır. Bu veri tabanlarına birer kod verilmiştir şöyleki;

(ssget "x" ' ((0. "text")))

ifadesiyle seçilen nesnelerle ilgili tüm yazı veri tabanı seçim kümesine dahil edilmiş olur. Nesnelerle ilgili veri tabanı kodları şu şekilde tertiplenmiştir.

Entity type 0 Block 2 Line type 6 Text style 7 Color 62
Elevation 38 Layer 8 Thickness 39 Attributes 66
İf
(Koşul) olarak da bilinen bu ifadeler if-then-else üçlüsüne dayanmaktadır. AutoLisp'te bir if’e bir then karşılık gelmektedir. ifadenin formatı şu şeklindedir:

(if (xxx1 ) (xxx2) (xxx3))

Burada if’ten sonra xxx1 kontrol edilmesi gereken deyimdir; örneğin (= a b) şeklinde ifade edilen a=b eşitliği gibi. Eğer bu deyim doğru ise o zaman (then) xxx2 deyimi işlem görür; değilse (else) xxx3 deyimi işlem görür. Örneğin:

(setq a 6)
(setq b 9)
(if (= a b) (setq b "eşit") (setq b "eşit değil"))

programı yazılıp işleme konulursa, !b girildiğinde "eşit değil" sonucu görünür. if ifadesine (progn) fonksiyonu kullanılarak bir çok then (o zaman) atanabilir. Bu fonksiyon xxx1'den
sonra parantezsiz yazılır; eğer if ifadesi sona ererse (progn) parantez içine yazılır. (= a b) 'in yanısıra, şu lojik fonksiyonlar vardır.

(> a b) a b'den daha büyük
(<>= a b) a b'den büyük veya eşit
(and a b) a ve b; lojik bağlaç ve
(or a b) a veya b; lojik bağlaç veya
(not ..) lojik hayır
(listp a) a bir liste ise
(null a) a nil ise

Örneğin: (if (> (getvar "FILLETRAD") 0.25) (setvar "GRİDMODE" 0))
ifadesi, eğer getvar fonksiyonunun yuvarlatma yarıçapı (Filletrad) 0.25 ten daha büyükse, ızgara modunu (Gridmode) 0'a eşitle anlamına gelir. Burada aksine yani yuvarlatma çapı 0.25'ten daha küçük olduğu durumda ne yapılacağını belirtilmediği için, hiç bir işlem yapılmaz.

Hiç yorum yok: