Yazar arşivleri: Umut Avcı

Umut Avcı hakkında

Harita ve Şehir Planlama üzerine çalışan, bilişim ve teknolojiye merakı olan, okumayı ve karalamayı da ayrı seven öylesine biri işte, hürmetler.

PlusCAD – İş Akışı Programlayıcısı

Harita Mühendisi Şaban GÜL‘ün hazırlamış olduğu iş akış programlayıcısını tanıyacağız.

Netcad, Autocad ve ArcGIS Projelerinizde İşinizi kolaylaştıracak büyük bir yenilik.

PlusCAD, İş Akışı Programlayıcısı ile Netcad ,Autocad, ArcGIS üzerinden yaptığınız tüm işlemleri otomatik sizler için hazırlayabilecek Türkiye’nin tek İş Akışı Programlayıcısı dır. Biz yaptıktan sonra tabiki başkalarıda bunu yapacaktır. 

  • Bir çok projede aynı şeyler defalarca yapmaktan bıkmadınız mı ?
  • Projeleri tek tek açıp bir çok işlemi elle tek tek açmak ?
  • Yada yazılımların sizi kısıtladığı ve makrolar ile çözümlenebilecek şeyler varken neden sürekli aynı şeyleri tekrarlamak zorundasınız ?
  • Sürekli projeksiyon değiştirme, tabaka ekleme, görselleri ayarlamak artık size amele işi gibi gelmiyor mu ?

PlusCAD ile Cad yazılımları üzerindeki yapmak istediğiniz fikirlerinizi gerçekleştirmeye yardımcı olur, ürettiğiniz bu fikirlerin analizini yaparak çalışmasını sağlayarak başarı elde etmenizi sağlarız. Her başarınız bir kazançtır.

Aynı şeyleri gereksiz yere yapmaktan sıkılan profesyonel düşünenler için profesyonel bir çözüm geliştirdik.

PlusCAD , sürekli yaptığınız tabaka aç, kapat, sil, ekle, renk değiştir, projeksiyon ayarla, çizgi tipi değiştir gibi onbinlerce işlemi otomatik yaptırabilecek kabiliyete sahip tek yazılımdır. PlusCAD herkes tarafından anlaşılabilir, basit bir şekilde çalışır:

  • Yaptığınız işlemleri PlusCAD ile işlem adımı olarak ekleyiniz.
  • İşlem adımlarınız tamamlandıktan sonra Makroya dönüştür butonuna basınız.
  • Makroyu kaydedip Netcad, Autocad veya ARCGIS ile açınız.
  • Dilerseniz makrolarla menü yapabilir, heryerde kullanabilirsiniz.
  • Listedeki tüm işlem adımları otomatik sizin için yapılacaktır. Dilerseniz bu listenizi saklayabilir ,farklı iş akış planlarınızda kullanabilirsiniz.

*Yazılımı indirmek için PLUSCAD linkini ziyaret ediniz.

Yazılımın pratikliği ortada, ileride daha pratik ve profesyonel çalışmalar göreceğiz sanırım :-) Çalışmalarını tebrik ediyor ve iyi çalışmalar diliyoruz. 

3- AutoLISP Veri Tipleri ve Geometrik Dönüşümler

AutoLISP’e Giriş dersimizde fonksiyon yapısından (Operatör, İşlemciler, Komutlayıcılar) bahsetmiştik.

(Fonksiyon Değişken [Değer]) şeklinde ki program yapılandırmasında Değişken grubunda; tamsayılar, ondalık sayılar, metin parçaları veya pickset (seçim seti) tabaka, çizgi tipi, metin stilleri veya Dimension Style gibi tanım nesneleri de yer alabilir.

Not olarak, (;) noktalı virgül işareti, fonksiyonun başına eklenirse noktalı virgülden sonra fonksiyon niteliğini kaybedip yorum metnine dönüşür.
Örnek:
(setq a 1); a değişkenine 1 değerini verdim.” İle “;(setq a 1) a değişkenine verdim.” Cümlelerinde noktalı virgül gelen birinci örnekte
;a değişkenine 1 değerini verdim.” Cümlesi yorum metni olarak okunur.
 İkinci cümlede ki “;(setq a 1) a değişkenine verdim.” İfadesinin tamamı yorum metni hâline dönüşür.

Değişken isimlerinin ingilizce karakter şeklinde ifade etmeniz fonksiyonun işleyişi açısından sağlıklı olacaktır. Yazdığınız fonksiyon komutlarının başında ve sonunda muhakkak parantez kullanılır. Açılan her parantez kapatılmalıdır aksi taktirde fonksiyonunuz çalışmayacaktır. Şekil -1- “()

A- DEFUN (Fonksiyon/İşlev Tanımlama)

Her program ve fonksiyonu, komutunuzun başında bir isim vererek tanımlarsınız.

(defun fonksiyon ismi ()
programın diğer iskeleti
)

Şeklinde ki bir programda; defun, program içerisinde diğer fonksiyonları da kapsar, genelliği ifade eder. Örneklerle açıklayalım.

1- (defun cizgiciz() ;yazdığınız programda ki tüm değişkenlere cizgiciz fonksiyonunu uygular.

2- (defun cizgiciz (/ nokta1 nokta2) ; kullandığımız değişkeni (cizgiciz) sadece belirttiğimiz noktalarda (nokta1 nokta2) local olarak kullanılmasını sağlar.

3- (defun C:cizgiciz() ; cizgiciz fonksiyonunu AutoCAD komutu şeklinde kullanmanızı sağlar.

4- (defun C:cizgiciz (/ nokta1 nokta2) ;İkinci örnekte ki gibi çizgi çizmesini söyler bunu yaparken AutoCAD komutu olarak belirtebileceğinizi söyler.

5- (defun cizgiciz ( a / nokta1 nokta2)) ; son değişkene programın dışından a değerini almasını söyler.

B- VERİ TİPLERİ (DATA TYPES)

Tamsayı:                         -1,-2,-3,1,2,3,4,5 vs.
Gerçek (Ondalık) Sayı:  1.0, 4.5, 8.3 vs.
Strings(Metin):               Çizgi, veri, nokta 1 vs. *Maksimum 100 karakter uzunluğu alabilir.
Listeler:                             (135.00 4656.33 1.1) X Y Z değerini gösterir, ( 1 a “umut” 455) vb.
Dotted Pairs:                    Birbirinden nokta (.) ile ayrılmış liste çiftleridir.
                                            Örn. ((KatmaAdi . “TAS_DUVAR” ) (CizgiKal . 0.5))
Entity Names(Nesne İsimleri): AutoCAD nesneleri, < Obje ismi: Lispler >
Nil(Sıfır, boş):                 Değişkene atanmayan değerleri gösterir ve kontrol eder.

B-1 Veri Giriş Komutları

Getpoint: Sizden AutoCAD ekranından bir noktaya tıklamanızı ister.
Getint: Sizden bir tamsayı girmenizi ister.
Getreal: Sizden bir reel sayı girmenizi ister.
Getcorner: Sizden bir önceki noktaya bağlı olarak pencerenin diğer köşesini seçmenizi ister
Getstring: Sizden bir metin girmenizi ister
Getdist: Sizden ekranda iki noktaya tıklamanızı veya bir sayı girmenizi ister
Getangle: Ekranda tıklama yaparak bir açı girmenizi ister. Birimi radyandır.
Getkword: Kullanıcıdan kelime ister.
Getvar: AutoCAD sistem değişkeni değeri verir.
Initget: Boş ve sınır girdilerini belirlemek için kullanılır.

C- VERİ TİPLERİ VE GEOMETRİK VERİLERİN DÖNÜŞÜMÜ

1- Açısal (Angular) Dönüşümler

Matematiksel işlemlerde açısal değerlerin dönüşümünü sağlayan fonksiyonlar mevcuttur. Bu fonksiyonlardan “angtos” ve “angtof” işlevlerinden bahsedecek olursak: Angtos, verilen açısal değerin istenilen biçimde metinsel değere (strings) çevrilmesini sağlar. Angtof ise verilen metinsel değerin istenilen biçimde açısal değere çevrilmesini sağlar. Angtos ve Angtof birbirinin zıttıdır. Ayrıca iki bağımsız değişkeni vardır bunlardan biri biçimi diğeri hassaslığı belirtir.
( angtos a 0 4) -> *(angtos a 0 4) örneğinde 0 biçimi, 4 ise ondalık kısmı belirtir.

0             Dereceler
1             Dereceler / dakika / saniye
2             Grad
3             Radyan
4             Surveyor üniteleri ( 3 ve daha fazla ondanlık kısmı)

Örnek;
Komut satırına sırasıyla:
(setq PI-YARISI (/ PI 2)) yazıp enter girdiğinizde 1.5708, (Pi değerinin yarısını verir)
(setq angstr (angtos PI-YARISI 0 2)) yazıp enter girdiğinizde “90.00”, (açı değeri virgülden sonra iki hane olacak şekilde derece cinsine çevrilmiş)
(setq deg (atof angstr)) yazıp enter girdiğinizde 90.0 (atof fonksiyonu diziyi reel sayı değerine dönüştürerek geri döndürür -> (90)=90.0 gibi)
(setq angstr (angtos 1.5708 1 6)) yazıp enter girdiğinizde “90d0’0.76\””,
(setq rad (angtof angstr 1)) enter girdiğinizde 1.5708 değerini tekrar verecektir.

a- Radyan-Derece ve Derece-Radyan Açısal Dönüşümler

**( Radyan / PI) * 180 = Derece’yi verir.

Örnek:
Komut Satırına:
(defun Radyan->Derece (nbrOfRadians)
(* 180.0 (/ nbrOfRadians pi)))

Radyan->Derece

Komut satırına: (Radyan->Derece PI) enter yaptığınızda  180.0 sonucunu verecektir.

** (Derece / 180) * PI = Radyan’ı verir.

Örnek:
Komut Satırına:
(defun Derece->Radyan (numberOfDegrees)
(* pi (/ numberOfDegrees 180.0)))

Derece->Radyan

Komut satırına: (Derece->Radyan 180.0)  enter yaptığınızda 3.14159 sonucunu verecektir.

2- Dizi (Strings) Dönüşümler

Sayısal değerler, metinsel veri veya çıktı olarak dizi dönüşümü şeklinde tanımlanmasını sağlar. Aşağıda ki fonksiyonlar gerçek sayı ve açısal değerlerin dönüştürülmesinde kullanılır:

rtos -> Sayısal değerlerin istenilen türde metinsel ifadelere (strings) çevrilmesini sağlar.
(rtos 175.41 2 3); “175.410” *İki değişken mevcut.

distof -> Metin biçimindeki değeri istenilen birimde gerçek sayıya çevirir.
(distof “12.3” 2); 12.3

angtos -> Verilen açısal değerin istenilen biçimde metinsel değere çevrilmesini sağlar.

angtof -> Verilen metinsel değerin istenilen biçimde açısal değere çevrilmesini sağlar.

RTOS Fonksiyon Formatları;

1             Bilimsel
2             Ondalık
3             Mühendislik (fit ve ondalık inç)
4            Mimari (fit ve kesirli inç)
5             Arbitalasyon fraksiyonel birimleri

a-1- Sayısal değerlerin dizi ve birimlere dönüştürülmesi

Örnek:

(setq x 17.5)
(setq str “\nBiçimlendirilen değer “) (setq fmtval (rtos x 1 4)) ; Mod 1 = bilimsel
(princ (strcat str fmtval))
Biçimlendirilen değer:  1.7500E+01

(setq fmtval (rtos x 2 2)) ; Mod 2 = ondalik
(princ (strcat str fmtval))
Biçimlendirilen değer:  17.50

(setq fmtval (rtos x 3 2)) ; Mod 3 = muhendislik
(princ (strcat str fmtval))
Biçimlendirilen değer:  1′-5.50″

(setq fmtval (rtos x 4 2)) ; Mod 4 = mimarlık
(princ (strcat str fmtval))
Biçimlendirilen değer:  1′-5 1/2″

(setq fmtval (rtos x 5 2)) ; Mode  = kesirli
(princ (strcat str fmtval))
17 ½ biçimlendirildi.

İlk iki örnek aynı şekilde görüntülenirken son üç  örnek görüntüsü aşağıda ki gibi olacaktır.

Biçimlendirilen değer:  1’5.50″

Biçimlendirilen değer:  1’5-1/2″

Biçimlendirilen değer:  17-1/2”

a-2- Dizi değerlerinin sayısal değerlere ve birimlere dönüştürülmesi

(distof “1.7500E+01” 1) ; Mod 1 = bilimsel

(distof “17.50” 2)      ; Mod 2 = ondalik

(distof “1′-5.50\”” 3)  ; Mod 3 = muhendislik

(distof “1′-5 1/2\”” 4) ; Mod 4 = mimarlık

(distof “17 1/2” 5)     ; Mod 5 = kesirli

3 ve 4’te ki fonksiyonlarda (\) kullanılması gerekiyor.

b- Sayısal değerlerin dizi ve açısal birimlere dönüştürülmesi

(setq ang 3.14159 str2 “\nBiçimlendirilen açı: “)
(setq fmtval (angtos ang 0 0)) ; Mod 0 = derece
(princ (strcat str2 fmtval))
Biçimlendirilen açı: 180

(setq fmtval (angtos ang 1 4)) ; Mod 1 = derece/dakika/saniye
(princ (strcat str2 fmtval))
Biçimlendirilen açı: 180d0’0″

(setq fmtval (angtos ang 2 4)) ; Mod 2 = grad
(princ (strcat str2 fmtval)) ; görüntülen açı değeri
200.0000g

(setq fmtval (angtos ang 3 4)) ; Mod 3 = radyan
(princ (strcat str2 fmtval))
Biçimlendirilen açı: 3.1416r

(setq fmtval (angtos ang 4 2)) ; Mod 4 = surveyor
(princ (strcat str2 fmtval))
Biçimlendirilen açı: W

b-1- Dizilerin (Strings) sayısal değerlere ve açısal birimlere dönüştürülmesi

(angtof “180” 0)              ; Mod 0 = derece
(angtof “180d0’0\”” 1)   ; Mod 1 = derece/dakika/saniye
(angtof “200.0000g” 2) ; Mod 2 = grad
(angtof “3.14159r” 3)      ; Mod 3 = radyan
(angtof “W” 4)                  ; Mod 4 = surveyor

3- ASCII Kodlarının Dönüşümleri

Komut satırına: (ascii “A”) yazıp enter yapın, daha sonra (chr 65) yazıp enter yapınca “A” değerini verdiğini görürsünüz.

4- Koordinat Sistemleri Dönüşümleri

Bu başlıkta “trans” fonksiyonunu kullanacağız. Trans, noktayı bir koordinat sisteminden diğer koordinat sistemine dönüştürmeye yarıyor.

0  World (WCS) -> (World Coordinate System – Dünya Koordinat Sistemi)

1  User (current UCS) -> (User Coordinat System – Kullanıcı Koordinat Sistemi)

2  Display;  0 ile 1 kodu ile kullanıldığında mevcut görüntü portunun DCS’si, 3 kodu ile kullanıldığında mevcut alan modelinin görüntüsünün DCS’si yansıtılır.

3  Kağıt Alanı DCS’si, PSDCS (sadece 2 kodu ile kullanılır.)

Örnek: WCS’den UCS’ye çevirme örneğidir.

(setq pt ‘(1.0 2.0 3.0))
(setq cs_from 0) ; WCS
(setq cs_to 1) ; UCS
(trans pt cs_from cs_to 0) ; disp = 0 PT’nin nokta olduğunu belirtir.

Geçerli UCS Dünya Z ekseni çevresinde saat yönünün tersine 90 derece döndürülürse, trans çağrısı bir noktaya (2.0, -1.0,3.0) döndürür. Bununla birlikte, değerleri to ve from değerleriyle değiştirirseniz, sonuç aşağıdaki kodda gösterildiği gibi farklılık gösterir.

(trans pt cs_to cs_from 0) ; sonuç (-2.0,1.0,3.0)

5- Geometrik Fonksiyonlar

Aşağıda, sıkça kullanılan geometrik fonksiyonların bazıları listelenmiştir:

angle;      Verilen iki nokta arasındaki açıyı radyan cinsinden verir.
distance; Verilen iki nokta arasındaki mesafeyi verir.
polar;       Başlangıç noktasına göre yeni bir noktanın tanımlanmasına yarar.
inters;      Verilen dört noktanın kesişim noktaların bulmak kullanılır.
osnap;     Nokta seçiminde AutoCAD’te ki osnap komutunun kullanılmasını sağlar.
textbox;   Yazı varlığının çevresindeki sınırlama kutusunun çapraz köşelerini geri döndürür.

(setq pt1 ‘(3.0 6.0 0.0))
(setq pt2 ‘(5.0 2.0 0.0))
(setq base ‘(1.0 7.0 0.0))
(setq rads (angle pt1 pt2))   ; Mevcut UCS’nin XY düzlemindeki açısı – değeri

                              ; radyan cinsinden döndürülür

(setq len (distance pt1 pt2)) ; 3D uzaydaki mesafe
(setq endpt (polar base rads len))

Kutup setlerine yapılan çağrı, pt1 pt2’den itibaren (1,7) ile aynı mesafede olan bir noktaya ve pt1 ile pt2 arasındaki açı olarak X ekseni ile aynı açıda sona erer.

6- Birim Dönüşümleri

Bir değeri bir birimden başka bir birime çevirmek için “cvunit” fonksiyonu kullanılır.

Örnek -1- Santimetre cinsinde ki değeri inc birimine çevirmek için;
Komut satırına:
(cvunit 1.0 “inch” “cm”)
Sonuç: 2.54

Örnek -2-
Komut satırına:
(cvunit 32 “fahrenheit” “celsius”)
3.46317e-009

Fahrenheit’den Celsius’a döndürdükten sonra döndürülen değer tam olarak 0.0 değil, cvunit tarafından döndürülen değerin hassasiyetini kontrol etmek için rtos değerlerini kullanabilirsiniz. Hâlâ gerçek bir değere ihtiyacınız varsa, rtos tarafından döndürülen dizgeyi, atof ile değiştirebilirsiniz.

(setq temp (cvunit 32 “fahrenheit” “celsius”))
3.46317e-009

(setq temp (rtos temp 2 2))
“0.00”

(setq temp (atof temp))
0.0

Bir sonra ki dersimizde AutoCAD komut satırı ile öğrenmeye/çalışmaya devam edeceğiz.

 İyi çalışmalar.

2- AutoLISP Matematiksel İşlemler

Bugün ki yazımızda AutoLISP öğrenme serimiz de temel autolisp matematik fonksiyonlarını/işlevlerini tanıyacağız. 

Fonksiyon İsmi: KIRMIZI    Açıklama: MAVİ    Vurgu: MOR

(+ [sayı sayı …]) Toplama: (+ 2 4 7 8) -> 2+4+7+8=21 şeklinde yorumlayıp sonucu yansıtacaktır.
                                                (+2 4.0 4) -> 2+4.0+4=10.0 şeklinde yorumlayacaktır.
*Toplama işleminde tamsayı değerlerinden oluşan dizinin sonucu tamsayı iken tamsayı + ondalık sayı işleminde ki dizi sonucu ondalık sayı şeklinde gösterilmektedir.

(- [sayı sayı …]) Çıkarma: (- -5 4) -> -5-4=-9 şeklinde sonucu verecektir.
                                               (- -5 4.0) -> -5-4.0=-9.0 şeklinde sonuç verecektir.
*Çıkarma işleminde ki tamsayı ve ondalık sayı örneğinde ki kaideler aynen geçerlidir.

(* [sayı sayı …]) Çarpma: (* 5 2 2) -> 5x2x2=20 sonucunu verecektir.
                                              (* -5.0 4) -> (-5)x4=20.0 sonucunu verecektir.
*Çarpma işlemi de yukarıda ki tamsayı ve ondalık sayı örneğinde ki gibi çalışır.

(/ [sayı sayı …]) Bölme: (/  5 4) -> 5/4=1 şeklinde yorumlanır.
                                           (/ 5.0 4) -> 5.0/4=1.25 şeklinde yorumlanır.
*Bölme işleminde tamsayı ve ondalık sayı farkı belirgin olarak ayrılır. Ondalık sayı içeren veri varsa işlem sonucu ondanlık sayıda ki rakamları da kapsamaktadır

(~ sayı ) Bitwise(Bit Metodu): ( ~ 4) -> -5   / (~ 5) -> -6   /  (~ 7) -> -8 şeklinde yorumlar.
*Bitwise, değerin eksilisinin -1 azaltılmış hâlini verir. Ör. (~3) -> 3 sayısının eksilisi -3 ve -3’ten -1 çıkarırsak -4 sonucunu verecektir. Kullanım yeri blok ve çalışmalarda kaydırma işleminde kullanılır.

(1+ sayı): (1+ 4) -> (+1)+4=5 şeklinde sonuç verir. Verilen değeri +1 arttırmaya yönelik bir fonksiyondur. Sadece dizi içinde ki 1 değer için geçerlidir. Şöyle ki, (1+ 5) işleminde sonuç verir ancak (1+ 4 5) şeklinde ki bir diziyi tanımlamayacaktır.

(1- sayı): (1-5) -> (-1)+5=4 şeklinde sonuç verir. (1+ sayı) fonksiyonunda ki işlemlerin aynısını içerir.

(abs sayı) Mutlak Değer: (abs -20) = (abs 20) -> iki sonuçta pozitif değer olan 20 sayısına eşit olur.

(atan sayı1 [sayı2]) Arctanjat: Radyan cinsinden Arctanjat değerine çevirir. (atan 4)= 1.32582 gibi bir sayıya eşitler.

(cos sayı) -> Cosinüs: Radyan cinsinden Cosinüs değerine çevirir. (cos 4)=-0.653644 gibi.

(log sayı) -> Logaritma: Sayının logaritma değerini verir. (log 5)= 1.60944

(exp sayı) -> Ters Logaritma: Sayının ters logaritma değerini verir. (exp 5)= 148.413

(expt sayı üstelsayı) -> Üstlü Sayı: Üstlü sayı fonksiyonudur. ( expt 2 3)=> 2x2x2=8

(fix sayı) -> Verilen ondalık sayının en küçük Tamsayı değerine(virgül solu) çevirir. (fix 14.99)=14

(float sayı) -> Verilen tamsayı değerini ondalık sayı değerine çevirir. (float 15)=15.0 vb.

(gcd sayı1 sayı2) -> Verilen iki sayının en büyük ortak bölenini verir. (gcd 12 4)=4 vb.

(max sayı1 sayı2 …) -> Girilen sayılar arasında ki en büyük sayıyı sonuç olarak gösterir. (max 1 2 3)=3

(min sayı1 sayı2 …) -> Girilen sayılar arasında ki en küçük sayıyı sonuç olarak gösterir. (min 1 2 3)=1

(minusp sayı) -> Girilen sayının veya işlemin negatif bir değer olup olmadığını kontrol eder. Negatif ise True(T) değilse Nil(nl) değerlerini ekrana yansıtacaktır.

(rem sayı1 sayı2 sayı3 …) -> İlk sayının ikinci sayıya bölümünden kalanını üçüncü sayı ile bölümünden kalan değerini verir. (rem 28 5 3)=0 olur. 28/5 bölümünden kalan 3 ve 3’ün sonra sayı olan 3 ile bölümünden kalan sıfırdır.

(sqrt sayı) -> Karekök: Sayının karekök değerini verir. (sqrt 25)=5 vb.

(zerop sayı) -> İşlem sonucunun sıfır olup olmadığını kontrol eder. Sıfır ise T değilse Nil değerinin verir.

(= sayı sayı) ve (= metin metin) veya (/= sayı sayı) ve (/= metin metin)  Eşitlik ve Eşit değildir ifadeleri -> (= 8 8)=8 sonucu doğru olduğundan T değerini (/= “Umut” “Avcı”) eşit olmadığından Nil değerini verecektir. *Küçük büyük harf duyarlılığı vardır.

(< sayı sayı) -> Küçüktür ifadesi: İki sayının küçük olup olmadığını karşılaştırır ve kontrol eder.
(<= sayı sayı) -> Küçük veya eşittir ifadesi: İki sayının küçük veya eşitlik durumunu kontrol eder.

(> sayı sayı) -> Büyüktür ifadesi: İki sayının büyük olup olmadığını karşılaştırır ve kontrol eder.
(>= sayı sayı) -> Büyük veya eşittir ifadesi: İki sayının büyük veya eşitlik durumunu kontrol eder.

Bir sonra ki dersimiz basit fonksiyonları/işlevleri tanıma üzerine olacaktır. İyi çalışmalar.

1- AutoLISP’e Giriş

AutoLISP, LISP (List Processor) programlama dilinin, Autodesk tarafından Autocad için özel fonksiyonlar eklenmiş bir alt versiyonudur. Autocad nesnelerini, veri tablolarını ve komutlarını yönetebilen oldukça gelişmiş bir parantez dilidir.

Komutlar dizisi olan fonksiyonlar ile işlemlerimizi yapacağız.

Fonksiyonları 3 bölümde inceleyebiliriz:
OPERATÖRLER – Kullanıcıdan verileri alır ( Sayı, string, nokta, mesafe ve AutoCAD obje/leri ) (ÖRNEK -1-)
İŞLEMCİLER – Verileri manipüle eder (ÖRNEK-2-)
KOMUTLAYICILAR – Autocad’e komut gönderir (ÖRNEK -3-)

*AutoLISP’e bende yeni giriş yapmış bulunuyorum, adım adım öğrendikçe deneyimlerimi ve bilgilerimi paylaşacağım.
NOT: Girilen fonksiyon/değişken/değer isimleri Autodesk’in kendi sitesinde erişebileceğiniz verilerdir. Ayrıca burada birçok hazır fonksiyonlar ile anlatım sizi korkutmasın tek amacım mantığını anlamaya yöneliktir. Zamanla A,B,C,D vb. harflerinden oluşan fonksiyonların tanımları ve örnekleriyle de paylaşım yapacağım.
Visual LISP Editör’üne geçmeden önce Command yani Komut Satırı’nda yapabileceğimiz kısa örnek komutlar ile pratik yapalım. 

————————————————————————————————————————

AutoLISP, fonksiyon içinde farklı fonksiyonları barındırmamıza ve onları kullanmamıza imkan sağlar.

*(fonk1 (fonk2 argümanlar)(fonk3 argümanlar))

*(setqvariable_name1 – değişken” “value1-değer“) [variable_name2 value2 …])  vb. şeklinde iç içe tanımlı kodlar tanımlanabilir ve yazılabilir.

ÖRNEK -1-

(getpoint) fonksiyonu: Kullanıcıdan nokta seçmesini ister.

Komut satırına: (setq a (getpoint “\nReferans kot noktasını seçiniz:”))

Yazarak ekranda herhangi bir noktayı tıkladığınızda (9.96543 9.9335 0.0) vb. bir veri gelecektir. Bu ise x, y ve z koordinatlarının bilgisini içeriyor. X=9.96543 Y=9.9335 Z=0.0

Daha sonra tıklamış olduğunuz noktanın koordinatlarını öğrenmek istiyorsanız başında ünlem (!) işareti ile tanımladığınız ( a ) verisini yazıp ( !a ) şeklinde komut satırına yazıp enter yapın. Karşınıza daha önce tıklamış olduğunuz noktanın koordinatları gelecektir ( a ) yerine başka tanım girebilirsiniz, isteğinize bağlı.

(getreal) fonksiyonu: Kullanıcıdan sayı girmesi ister

Komut satırına: (setq refkot (getreal “\nReferans kot degerini girin:”))

ÖRNEK -2-

(setq a (getpoint “\nA noktasını belirtin : “))

(setq b (getpoint “\nB noktasını belirtin : “))

(setq c (getpoint “\nC noktasını belirtin : “))

(setq b (polar a (/ pi 3) 3))
(setq c (polar b pi 3))

Noktaların uzunluk ve açıya bağlı olarak koordinatlarının belirlendiği ve kenar uzunlukları 3 cm olan 60 derecelik açıya sahip eşkenar bir üçgen çizecektir.

ÖRNEK -3-

Bir diğer örneğimiz ise noktalar arasına çizgi çiz 

(setq a (getpoint “\nİlk noktayı belirtin : “))

(setq b (getpoint “\nİkinci noktayı belirtin : “))

(setq c (getpoint “\nÜçüncü noktayı belirtin : “))

(command “plinea b c “c”)

Belirtilen komutları sırasıyla girince, birinci (a), ikinci nokta (b) ve üçüncü nokta (c) arasında polyline çizer.

ÖRNEK -4-

Birde diyalog penceresi için örnek yapalım : – )

A- (alert “Merhaba ve AutoLISP’e hoş geldiniz!”)

B- (alert (strcat “Merhaba ” “ve ” ” AutoLISP’e hoş geldiniz!”))

A ve B örneklerinde iki farklı komutta aynı diyalog penceresinde ki görüntüyü getirecektir. Tırnak içinde boşluk bırakarak kelimeler arası boşluğu ayarlayabilirsiniz. “Alert” ve “Strcat” fonksiyonları arasında şöyle bir fark var. Alert tek bir diziyi ( tırnak içinde ki veriyi ) yansıtırken Strcat ise birden fazla olan dizileri birincinin sonuna ikinci, ikincinin sonuna üçüncüyü vs. sırasıyla ekleyerek birçok diziyi tek bir diyalog penceresinde görüntülemenize imkan sağlıyor.

Görüldüğü üzere birçok gömülü fonksiyon ile çalışılabilir.

 

C- (defun mesaj (msg mode / )
            (if (= mode 0)
               (prompt (strcat “\n” msg))
                  (alert msg)
     )
      (princ)
   )

Şeklinde yazılmış bir “mesaj” fonksiyonunu iki farklı şekilde ekranda gösterebiliriz.

1- (mesaj “Merhaba ve AutoLISP’e hoş geldiniz!” 0)
2- (mesaj “Merhaba ve AutoLISP’e hoş geldiniz!” 1)

0 değeri ile komut satırına yazdığımız fonksiyon komut satırının hemen üstünde ileti şeklinde görüntülecektir.

1 değerinde ki fonksiyonu komut satırına yazdığınızda ise yukarıda ki A ve B örneklerinde olduğu gibi diyalog penceresinde görüntülecektir. Fonksiyona tanımlı bir değeri daha sonra çağırarak işlemlerimizi kontrol edebiliriz.

Yapılan örneklere dair sorun yaşayanlar olursa bilgilendirebilirler ayrıca fonksiyonları yazmak için Notepad++ editörünü tavsiye ederim.

Bir diğer dersimiz farklı örnekler üzerinden devam edecektir.

İyi çalışmalar.

 

Prizmatik Alım Yöntemi

Detay noktalarının, izdüşüm koordinatları ile belirlenen yatay konum doğruluğu (sx2+sy2)1/2 ±7 cm olarak elde edilecek biçimde; elektronik takeometri, prizmatik alım , GPS ile detay ölçmeleri veya benzer doğruluğu sağlayan teknikler ve yöntemler kullanılabilir. Okumaya devam et