Arkitera Forum  
Geri Git   Arkitera Forum > Mimarlık ve Bilişim > Yazılımlar > AutoCAD

Yanıt
 
Konu Araçları Modları Görüntüle
Eski 18-05-2005, 12:37   #16
Forum Üyesi
 
Kayıt Tarihi: 28-02-2005
Mesaj: 78
DEĞİŞKENLER

Değişkenler, SETQ fonksiyonu kullanılarak değerlerin. atandığı karakter veya karakterler dizisidir. İlk harfi bir karakter olmak şartıyla değişken isimleri içinde tamsayı veya reel sayı olabilir. Değişkenlere verilecek isimler istenilen uzunlukta olabilir. Büyük küçük harf ayrımı yapılmaz. Ancak değişken ismi içinde boşluk karakteri bulunamaz.

Kullanılabilecek değişken isimlerine aşağıdakileri örnek verebiliriz.
ABX YCAP nokta1 kabin5a

Geçersiz değişken isimlerine örnekler ise ;
12A 1,Z 1nokta TAM SAYI

Değişken isimlerinin seçimi kurallara uymak şartıyla kullanıcının isteğine göre değişebilir. Değişken isimleri genellikle kendisine atanan değeri tanımlayacak şekilde verilir. Bu, daha sonraki fonksiyonlarda hangi değişkenin hangi değere veya fonksiyona ait olduğunun hatırlanması bakımından kolaylık sağlar.

(setq <değişkenadı> <değer>.......)
otokoc offline   Alıntı Yaparak Yanıtla
Eski 18-05-2005, 20:08   #17
Forum Üyesi
 
Kayıt Tarihi: 28-02-2005
Mesaj: 78
Örnekler

(defun toplama ()
(setq tamsay1 (getint "BIRINCI SAYIYI GIRINIZ :"))
(setq tamsay2 (getint "IKINCI SAYIYI GIRINIZ :"))
(setq toplam (+ tamsay1 tamsay2))
(princ "\nSONUC : ")
(princ toplam)
(princ)
)

(setq A C)
(setq ODA5 2.678)
(setq ISIM "ENDER CIKIS")

Yukandaki son örnekte görüldüğü gibi ISIM değişkenine ENDER CIKIS yazı dizisi atanmıştır. Burada dikkat edilmesi gereken değişkenlere atanacak yazı dizilerinin veya ekranda yazdırılacak iletilerin " " içinde yazılmasıdır ("BIRINCI SAYIYI GIRINIZ" gibi).

Bir tek setq fonksiyonu içinde birden fazla değişkene değer ataması da yapılabilir.

(setq A 6
ODA5 2.678
ISIM "ENDER CIKIS"
)

veya

(setq A 6 ODA5 2.678 ISIM "ENDER CIKIS")

gibi.

Örneklerde görüldüğü gibi bir tek setq fonksiyonu kullanılarak, aynı fonksiyon içinde A, ODA5 ve ISIM değişkenlerine aynı anda değer ataması yapılmıştır.

Değişkenlere nokta koordinatlarının atanması biraz daha farklıdır. Nokta koordinatları parantez içinde yazılmalıdır. İki boyutlu bir nokta için parantez içine o nokta koordinatının X ve Y değerleri, üç boyutlu bir nokta içinse o nokta koordinatının X, Y ve Z değerleri yazılır.

Örn:

(X Y) ® (5 8) (2.25 6.3)

(X Y Z) ® (5 8 3) (4 7.45 0) gibi

Bu nokta koordinatları, bir değişkene atanarak işleme sokulmak istendiğinde " LIST " fonksiyonunun kullanılması gerekir. Bu fonksiyon bir liste tanımlaması yapar.

Örn 1:

(setq POINT1 (list 3.45 8))

Bu fonksiyon POINT1 noktası için noktanın X değerinin 3.45 Y değerinin ise 8 olduğunu belirtir.

Örn 2:

(setq P1 4)

(setq P2 (list 3.45 P1))

Örnek 2 de önce P1 değişkenine 4 değeri atanıyor. İkinci satırda P2 değişkenine bir liste atanıyor. Bu listenin ilk elemanı 3.45 sayısı ikinci elemanı ise P1 değişkeninin değeridir. Yani P2 noktasının koordinatının X değeri 3.45 iken Y değeri P1'e atanmış değerdir.

Aşağıdaki örnekte ise K değişkenine nil (boş) değeri atanmaktadır. Yani K değişkenine daha önce atanmış bir değer varsa bu değer iptal edilmiş olur.

(setq K nil)

AutoLISP programlarının yazılmaları esnasında açıklamalar yazılması gerektiğinde bu açıklamalar " ; " (noktalı virgül) ile başlar. Noktalı virgül satır başında konmuş ise satırın tamamı açıklama olarak kabul edilir ve işleme konnıaz. Noktah virgül, satır başmda değil de işleme konan bir program satırmda ise noktah virgülden sonraki kısım işleme konmayarak açıklama olarak kabul edilir.

Kısaca noktalı virgül Basic dilindeki açıklama satırlarının başına konan REM komutuna benzer.
Aynca AutoLISP fonksiyonları bölümünde setq fonksiyonuna da bakınız.
otokoc offline   Alıntı Yaparak Yanıtla
Eski 18-05-2005, 20:10   #18
Forum Üyesi
 
Kayıt Tarihi: 28-02-2005
Mesaj: 78
ÖZEL KURALLAR

$ İfadeler ve fonksiyon isimleri içinde ( ). ' ; " gibi karakterler bulunamaz.
$ Deyimler ve ifadeler sığmadıkları takdirde birden fazla satıra taşabilir.

$ İfadeler arasında birden fazla olan boşluk karakterleri tek bir boşluk olarak kabul edilir.

$ Değişkenler ve fonksiyon isimleri bir rakam ile başlayamaz. Değişken isimleri arasında boşluk karakteri kullanılamaz.

$ Reel tamsayılar bir veya daha fazla tamsayı, ardından bir nokta ve sonra da bir yada daha fazla ondalık değer içerebilir. Örneğin 0.5 veya 0.8 aynen yazılmalıdır. Eğer .5 veya .8 olarak yazılırsa program tarafindan kabul edilmezler.

$ Bir değişkene atanan değer, o değişkene yeni bir değer atanıncaya veya AutoCAD ortamından çıkılıncaya kadar korunur.

$ Ekranın komut alanında görüntülenmesi istenen bir yazı, " " içine yazılmış olmadır (prompt örneğine bakınız).

$ Bir AutoCAD iletisine bir lisp deyimi ile yanıt verilmek istendiğinde bu yanıtın ilk karakteri "!" olmalı veya ( ) içinde yazılmalıdır.

$ Tırnak işaretleri içine konacak \ işareti özel kontrol karakterlerinin kullanılmasına olanak sağlar. Bu kontrol karakterleri

\\ \ Karakteri

\e Escape

\n Satırbaşı (next line)

\r Return (Enter)

\t Tab

\nnn octal kodu nnn olan karakter

olarak tanımlanmıştır.
otokoc offline   Alıntı Yaparak Yanıtla
Eski 18-05-2005, 20:12   #19
Forum Üyesi
 
Kayıt Tarihi: 28-02-2005
Mesaj: 78
DOSYALARIN YÜKLENMESİ

AutoCAD ortamına, ekranda Command : iletisi varken aşağıdaki satır yazıldığında "dosyaadı" olarak belirtilen AutoLISP dosyası yüklenir.

(load "dosyaadı") şeklinde olur.

Eğer dosya bir diskette veya çalışılmakta olan directory’den başka bir yerde ise dosya adı adresiyle birlikte yazılmalıdır.


Örn:

(load "<drive>:/<directory>/dosyaadı")

Bir sol parantez içinde yazılan Load ifadesinden sonra tırnak içinde yüklenecek *.LSP uzantılı dosyanın adı yazılır. Geliştirilen AutoCAD versiyonlarında LISP dosyalarının yükleme işlemi kolaylaştırılmaktadır. Örneğin AutoCAD R.12 de LISP dosyalarının işlemi Pulldown Menu’deki Files menü başlığında yeralan Applications butonu sayesinde kolaylıkla yapılabilmektedir.

Aşağıda, girilen açı değerini radyan cinsine çeviren bir fonksiyon yeralmaktadır. Fonksiyonu, ASCII forınatta dosya saklayabilen bir kelime işlemcide yazuı. Saklarken ASCII fornıatta olmasına ve uzantısıııın *.LSP olmasına dikkat ediniz. Bu öıneğimizin saklandığı LSP uzantılı ASCII dosyamıın acı.lsp olduğunu varsayalım. Fonksiyonun yazılışına ve AutoCAD ortamına çağrılarak çalıştıntmasına dikkat ediniz ;

Fonksiyonun yazılması ;

(defun cevir (a) ;fonksiyonu tanımla, fonksiyonun adı cevir
(* pi (/ a 180.00)) ;a değerini 180'e böl, pi ile çarp
)

AutoCAD ortamına çağrılması ;

(load "aci")

Çalıştrılması ;

(cevir 180)

Program bu işlemin sonucu olarak 3.1415926 yazacaktır. Bu 180 derecenin radyan cinsinden karşılığıdır. Bu arada şunu da hatırlatmakta yarar var : AutoLISP'de açılar radyan cinsinden hesaba konur. Radyan cinsinde açılar

Oo = 0
90o = 1.570796
180o = 3.141592
270o = 4.7I2389
değerlerine sahiptir.

Dikkat edilirse buraya kadar olan fonksiyon örnekleri, en son anlatılan konu ışığında

(load "dosyaadi")

şeklinde çağrılmakta. Ancak bu fonksiyonları bir AutoCAD komutu gibi çağırmak da mümkün. Aşağıdaki örneği inceleyiniz.

(defun c:cevir (/ a)
(setq a (getint "TAMSAYI ACI DEGERINI GIRINIZ : "))
(setq a (* pi (/ a 180.00)))
(princ "\nSONUC : ")
(princ a)
(princ)
)

Dikkat edilirse fonksiyonda yaptığımız en önemli değişiklik, fonksiyon adı olan cevir'den önce c: yazmak oldu. Yazdığımız bu program AutoCAD ortamına yüklendiğinde yükleme işlemi tamamlanır tamamlanmaz ekranda c: cevir iletisini görüntüler. Burada kullanılan c: işletim sisteminde kullanılan ve sürücüyü tanımlayan c: anlamında
değildir. Bu iletiden sonra ekranda Command: iletisi varken cevir yazıldığında program tamsayı olarak açı değerinin girilmesini ister. Değer girildikten sonra da bu değerin radyan cinsinden karşılığını yine ekrana yazar.

Bu şekilde yazıldıktan sonra AutoCAD ortamına yüklenmiş olan bir LISP program dosyası AutoCAD ortamından çıkılana kadar tıpkı bir AutoCAD komutu gibi çalışır. AutoCAD'in her yüklenişinde bu tür fonksiyonların komut gibi çalıştırılması istenirse bu fonksiyon adlarının acad.lsp dosyasına ilave edilmesi gerekir. Acad.lsp dosyası AutoCAD'in her çalıştırılışında otomatik olarak yüklenen (çağrılan) bir dosyadır
otokoc offline   Alıntı Yaparak Yanıtla
Eski 18-05-2005, 22:46   #20
Yönetici
 
ayasofya'in Avatar'ı
 
Kayıt Tarihi: 15-01-2002
Mesaj: 5.496
Blog Mesajları: 16
tebrikler ve teşekkürler
__________________
Selamlar ve Sevgiler ....................................... AYASOFYA

Bu SMGM ne yapar. Eğitimlerde kimi denetler, SMGM'yi kim denetler?

Tasarlanmış-tasarlanmamış camiler


TÜRKÇE KARAKTER KULLANINIZ. "v" yerine "w" kullanmayınız. Kurallar için TIKLAYINIZ
ayasofya offline   Alıntı Yaparak Yanıtla
Eski 19-05-2005, 13:12   #21
Forum Üyesi
 
Kayıt Tarihi: 28-02-2005
Mesaj: 78
Örnekler :

(- A cap1) A - cap1 ; anlamındadır.
(+ 50 H) 50 + H ; anlamındadır.
(/ YUKSEKLIK 4) YUKSEKLIK / 4 ; anlamındadır.
(* pi 2) pi * 2 ; anlamındadır.
(/ 80 4 2) 80 / 4 / 2 = 10 ; sonucunu verir.
(- 50 10 25 10.5) 50-10-25-10.5=4.5 ; sonucunu verir.
(+ 50 10 25 10.5) 50+ 10+25+ 10.5=95.5 ; sonucunu verir.
(* pi (/ a 180.00)) pi * a / 180.00 ; anlamındadır.

(/ 20 ( * (+ (- A B) n1 ) 5) )

Yukarıdaki satırda yeralan işlemlerin sırası ise ;

· A 'dan B 'yi çıkar,
· çıkan sonuçla n1 'i topla,
· çıkan sonuçla 5 ‘i çarp,
· 20 'yi çıkan sonuca böl.
otokoc offline   Alıntı Yaparak Yanıtla
Eski 19-05-2005, 14:01   #22
Forum Üyesi
 
Kayıt Tarihi: 28-02-2005
Mesaj: 78
(ssget (<mod> [nokta1> [<nokta2>] ] )

Bu fonksiyon bir seçim grubu elde edilmesinde kullanılır. [ ] içinde yazılmış ve belirtilmeleri isteğe bağlı olan değişkenlerin hiçbirinin kullanılmaması durumunda fonksiyon obje seçimini kullanıcının yapmasını ister. Bu AutoCAD'in standart "Select object :" iletisi ile yapılacak obje seçimini gerçekleştirir.

<mod>, AutoCAD'in standart obje seçiminde kullandığı window, crossing, previous gibi seçim modlarından biridir.

Mod Anlamı
w Window yöntemi. Tanımlanan pencere içine tamamı
giren objeler seçilir.
"c" Crossing yöntemi. Tanımlanan pencere içine tamamı
giren objeleı1e birlikte pencerenin herhangi bir kenarına
en küçük noktası dahi temas eden objeler seçilir.
"L" Last yöntemi. Çizim ortamınn katılan en son obje seç1lir.
"p" Previous yöntemi. Bir önceki obje seçme işlemi.
sırasında seçilmiş olan objeler seçilir.
Belirtilmesi isteğe bağlı olan <nokta1> ve <nokta2> "w" veya "c" yöntemi kullanıldığında açılacak olan pencerenin karşılıklı iki köşe noktasının verilmesinde kullanılır.
Sadece <nokta1> verildiğinde verilen bu noktanın üzerinde olduğu obje seçilir.

Örnek:

(ssget) seçimi kullanıcının yapması beklenir.
(ssget "w" '(3 3) '(7 7)) Karşılıklı köşe noktaları 3,3 ve 7,7 koordinatlarında
olan pencerenin içine tamamı giren objeler seçilir.
(ssget "c" '(3 3) '(7 7)) Karşılıklı köşe noktaları 3,3 ve 7,7
koordinatlarında olan pencerenin içine
tamamı giren objelerle birlikte pencerenin
herhangi bir kenarına en küçük noktası
dahi temas eden objeler seçilir.
(ssget "p") Bir önceki obje seçme işlemi
sırasında seçilmiş olan objeler seçilir.
(ssget "L") Çizim ortamına katılan en son obje seçilir.
(ssget '(5 5)) 5,5 koordinatından geçen obje seçilir.

Fonksiyon sadece herhangi bir parametre olmadan (ssget) şeklinde kullanıldığında kullanıcının seçtiği objeler aydınlatılır.

Örnek :

(defun c:sil (/ p1 p2 s1)
(setq p1 (getpoint "\nPENCERENIN BIRINCI NOKTASI :"))
(setq p2 (getcorner "\nDIGER NOKTASI :"))
(setq s1 (ssget "w" p1 p2))
(command "erase" s1 "")
(princ)
)

Yukardaki örnek program, açılacak pencere içine tamamı giren objeleri seçtikten sonra AutoCAD'in ERASE komutunu kullanarak siler.
otokoc offline   Alıntı Yaparak Yanıtla
Eski 19-05-2005, 14:04   #23
Forum Üyesi
 
Kayıt Tarihi: 28-02-2005
Mesaj: 78
(sslength <set>)

Bu fonksiyon bir seçim grubu içinde bulunan objelerin sayısını verir. Bu sayı bir tamsayıdır. Seçim grupları hiçbir zaman aynı şeklin ikinci kez seçimini bulundurmaz. <set>, seçim grubunu belirten değişkendir,

Örnek :

(defun c:objesay (/ p1 p2 obje s1 sayi)
(setq p1 (getpoint "\nPENCERENIN BIRINCI NOKTASI :"))
(setq p2 (getcorner "\nDIGER NOKTA :"))
(setq obje (ssget "w" p1 p2)) ; objeleri seç, obje'ye ata
(if (/= obje nil) ; obje değişkeni boş değilse
(progn ; bunları yap
(setq s1 (sslength obje)) ; obje sayısını öğren, s9' ata
(setq sayi (itoa s1)) ; s1 'in dizgiye çevirsayı'ya ata
(princ (strcat "\nSECIM KUMENIZDE" sayi "ADET OBJE VAR") )
)
(princ "\nSECILEN OBJE YOK") ; obje değişkeni boşsa bunu yap )
)
(princ)
)
otokoc offline   Alıntı Yaparak Yanıtla
Eski 19-05-2005, 14:07   #24
Forum Üyesi
 
Kayıt Tarihi: 28-02-2005
Mesaj: 78
(ssname <set> <arg>)

Bu fonksiyon, <set> belirtilmiş olan seçim grubu içindeki <arg> 'ıncı objenin ismini sonuç olarak verir. Fonksiyona sağlanan <arg> değeri bir tamsayı olmalıdır. Eğer <arg> Tamsayı negatif bir sayı yada seçim grubunda yeralan obje adedinden fazla ise nil sonucu elde edilir. Seçim grubundaki ilk eleman için <arg> değeri 0 (sıfir)'dır.

Örnek :

(defun c:objeisim (/ p1 p2 ob s1 sayi)
(setq p1 (getpoint "\nPENCERENIN BIRINCI NOKTASI :"))
(setq p2 (getcorner "\nDIGER NOKTA :"))
(setq ob (ssget "w" p1 p2)) ; objeleri seç, ob 'a ata
(if (/= ob nil) ; ob değişkeni boş değilse
(progn ; bunları yap
(setq s1 (sslength ob)) ; obje sayısını öğren, s1' e ata
(setq sayi (- s1 1)) ; s1'i 1 eksilt sonucu sayı'ya ata
(ssname ob sayi) ; ob'daki sayı'ncı objenin adını ver
) ; obje değişkeni boşsa hiçbirşey
) ; yapma
)
otokoc offline   Alıntı Yaparak Yanıtla
Eski 19-05-2005, 18:05   #25
Forum Üyesi
 
Kayıt Tarihi: 28-02-2005
Mesaj: 78
şimdilik bu kadar.... iyi çalışmalar.....
.sld
.dcl
yakında.....
otokoc offline   Alıntı Yaparak Yanıtla
Eski 20-05-2005, 00:14   #26
Arkitera Üyesi
 
Kayıt Tarihi: 10-12-2004
Mesaj: 844
Tüm anlatımlar için çok teşekkürler. Atık bizler de kendi lisplerimizi yazabileceğiz
__________________
bulutların gözyaşları pencerene vururken düşüncelere daldığın gecede kurduğun hayaller sana uyumayı unutturuyorsa, gelecek o hayalleri sana yaşatsın..
Melody offline   Alıntı Yaparak Yanıtla
Eski 20-05-2005, 10:22   #27
Forum Üyesi
 
Kayıt Tarihi: 28-02-2005
Mesaj: 78
yardımcı olabildimse ne mutlu...yalnız buraya lisp ile ilgili
en temel fonksiyonları yazdım. daha sonra istek olursa
diğerlerinide yazabilirim. kolay gelsin..
otokoc offline   Alıntı Yaparak Yanıtla
Eski 21-05-2005, 09:30   #28
Forum Üyesi
 
Kayıt Tarihi: 28-02-2005
Mesaj: 78
(ssadd [<isim> [<set>] ] )

Bu fonksiyon, verilmesi isteğe bağlı olan parametreler belirtilmeden kullanıldığında ssget fonksiyonu gibi çalışacak fakat oluşturulacak seçim setinin hiç elemanı bulunmayacaktır.
Fonksiyon <isim> olarak bir obje ismi verilerek çalıştırıldığında, sadece bu <isim> 'deki objeden oluşan yeni bir seçim seti meydana getirecektir.

Her iki parametre de kullanılarak, yani hem obje ismi <isim> , hemde önceden oluşmuş bir seçim setinin adı <set> verilerek çalıştırıldığında ise <isim> olarak belirtilen objeyi <set> olarak belirtilen seçim setine ilave edecektir.

SSADD fonksiyonu sonuç olarak herzaman yeni seçim setini verir. Eğer mevcut <set> bir değişkene atanmışsa değişkenlerde bu düzenlemeden etkilenecek ve yeni seti kullanacaklardır.
Bunlarla birlikte, eğer <isim> olarak belirtilmiş olan obje <set> olarak belirtilmiş seçim setinde zaten mevcut ise fonksiyon kendini otomatik olarak iptal edecek ve bununla ilgili olarak herhangi bir hata oluşmayacaktır.
otokoc offline   Alıntı Yaparak Yanıtla
Eski 21-05-2005, 09:32   #29
Forum Üyesi
 
Kayıt Tarihi: 28-02-2005
Mesaj: 78
(ssdel <isim> <set>)

SSDEL fonksiyonu, <isim> olarak belirtilmiş ismin ait olduğu şekli <set> olarak belirtilmiş olan seçim setinden siler. Sonuç olarak da seçim setinin adını verir. Bu işlem sonucunda elde edilecek olan seçim seti ssadd fonksiyonunda olduğu gibi yeni bir seçim seti olacaktır.

Eğer belirtilen <set> içinde <isim> yoksa fonksiyon sonucu nil olacaktır.
otokoc offline   Alıntı Yaparak Yanıtla
Eski 21-05-2005, 09:40   #30
Forum Üyesi
 
Kayıt Tarihi: 28-02-2005
Mesaj: 78
ACADVER (Read Only) : AutoCAD Versiyon numarası.

AFLAGS : Attdef Komutu için niteleyici işaretleri :
1= Görünmez
2= Sabit
3= Doğrulama

ANGBASE : 0 Açı yönü.

ANGDI R : 1= Saat yönü açıları.
0= Saatin ters yönü açıları

APERTURE : Birimkare olarak hedef kutucuğunun boyutu.

AREA (Read Only) : Area, List veya Dblist ile hesaplanmış en son alan.

ATTDIA : 1 ise, Insert işlemi sırasında niteleyicideki değerler değiştirilebilir.
0 ise değiştirilmez.
Default değeri 0 dır.

ATTMODE : Niteleyici görüntü modu ;
0 = OFF,
1= NORMAL,
2=ON.

ATTREQ : 1 ise, Insert işlemi sırasında niteleyicideki değerleri gösteren, istenirse yeni değerlerin girilmesine olanak sağlayan Attribute Tag ve Attribute Prompt iletileri görüntülenmez. 0 ise görüntülenir.
otokoc offline   Alıntı Yaparak Yanıtla
Yanıt

Yerimi olarak kaydedin


Şu an bu konuyu izleyen aktif kullanıcılar: 1 (0 üye ve 1 misafir)
 
Konu Araçları
Modları Görüntüle

Mesaj Yazma Hakları
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
[IMG] kodu Açık
HTML kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Kapalı


Tüm saatler GMT +3. şu anda saat 01:40.


Powered by vBulletin® |Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177