AUTOLISP VE PROJE MHENDSLNDE UYGULAMALARI SUNAN Tolga Grol

  • Slides: 26
Download presentation
AUTOLISP VE PROJE MÜHENDİSLİĞİNDE UYGULAMALARI SUNAN: Tolga Gürol

AUTOLISP VE PROJE MÜHENDİSLİĞİNDE UYGULAMALARI SUNAN: Tolga Gürol

1. 2. 3. 4. 5. Autolisp Nedir? Diğer AUTOCAD API’ları Autolisp Fonksiyonları Programlama ve

1. 2. 3. 4. 5. Autolisp Nedir? Diğer AUTOCAD API’ları Autolisp Fonksiyonları Programlama ve Avantajları Proje Çizimlerine Yardımcı Autolisp Uygulamaları

1. AUTOLISP NEDİR? • Autolisp, Autocad için özel olarak üretilmiş yazılım programlama arabirimidir (API)

1. AUTOLISP NEDİR? • Autolisp, Autocad için özel olarak üretilmiş yazılım programlama arabirimidir (API)

2. DİĞER AUTOCAD API’ları Autocad’e sunabileceğimiz 3 temel API vardır. • C/C++ API (Object.

2. DİĞER AUTOCAD API’ları Autocad’e sunabileceğimiz 3 temel API vardır. • C/C++ API (Object. ARX) • VB API • Autolisp API Hangisi daha iyi? The Auto. CAD APIs by Andrew Canfield

UYGUN API SEÇME KRİTERLERİ • Hangi yazılım dilinde kendimi daha rahat ve verimli hissediyorum?

UYGUN API SEÇME KRİTERLERİ • Hangi yazılım dilinde kendimi daha rahat ve verimli hissediyorum? • Ne kadar zamanım var? • Hedef kullanıcı kitlem kim ve Autocad bilgileri ne ölçüde? • Autocad ve / veya İşletim sistemini ne ölçüde kontrol etmeye ihtiyacım var? The Auto. CAD APIs by Andrew Canfield

OBJECT ARX API • Diğer dillere kıyasla, Autocad ve Windows üzerinde en çok hakimiyeti

OBJECT ARX API • Diğer dillere kıyasla, Autocad ve Windows üzerinde en çok hakimiyeti olan arabirim. • C veya C++ ‘a alışkın olanlar için kullanışlı. • Minimum Autocad bilgisi olan kitle için uygun. • Diğer 2 API’nin giriş yapamadığı Autocad değişkenlerine giriş sağlar. • Diğer API’lere göre daha uzun kodlar yazmak gerekiyor, daha çok zaman ayırmak gerekli ve basit çizim gereçleri için daha çok hafıza kullanıyor. Kullanım alanları: “Custom object”, “Spatial filtering”, diğer API’ler için yazılmış uygulamaların fonksiyonelliğini artırmak için kullanışlı. The Auto. CAD APIs by Andrew Canfield

OBJECT ARX API ÖRNEK void chng. Att() { ads_name entres; ads_point ptres; Ac. Db.

OBJECT ARX API ÖRNEK void chng. Att() { ads_name entres; ads_point ptres; Ac. Db. Object. Id _Id, _att. Id; Ac. Db. Object. Iterator *p. Ittr = NULL; if(aced. Ent. Sel("Select a Block Reference", entres, ptres) != RTNORM ) { //Selection failed return; } acdb. Get. Object. Id(_Id, entres); Ac. Db. Object. Pointer<Ac. Db. Block. Reference> p. Ref(_Id, Ac. Db: : k. For. Read); if(p. Ref. open. Status()!=Acad: : e. Ok) { //Open failed return; } p. Ittr = p. Ref->attribute. Iterator(); } while(!p. Ittr->done()) { _att. Id = p. Ittr->object. Id(); Ac. Db. Object. Pointer<Ac. Db. Attribute> p. Att(_att. Id, Ac. Db: : k. For. Write); if(p. Att. open. Status()==Acad: : e. Ok) { p. Att->set. Text. String("We changed this"); break; } p. Ittr->step(); } delete p. Ittr; The Auto. CAD APIs by Andrew Canfield

VB API • İlk defa Autocad arabirim yazılımı kullanacaklar için uygun. • “Visual Basic”

VB API • İlk defa Autocad arabirim yazılımı kullanacaklar için uygun. • “Visual Basic” yazılım diline yatkın olanlar için kullanışlı. • Sadece komut isimlerini okuyarak komutların ne işe yaradığı anlaşılabilir. • Autocad erişimi C++ veya Autolisp API’lerine göre daha sınırlıdır. • Uygulamaların çalıştırılması için, buton ya da menü imgesinden seçim yapılmalı. (Sadece komutla çalışan kullanıcılar için kullanışsız) • Dialog kutularını ve butonları en hızlı ve kolay hazırlayan API. The Auto. CAD APIs by Andrew Canfield

VB API ÖRNEK Option Explicit Sub chng. Att() Dim obj. Ent As Acad. Object

VB API ÖRNEK Option Explicit Sub chng. Att() Dim obj. Ent As Acad. Object Dim obj. Ref As Acad. Block. Reference Dim var. Atts As Variant Dim obj. Att As Acad. Attribute. Reference Dim empty. Pt As Variant This. Drawing. Utility. Get. Entity obj. Ent, empty. Pt, "Select Block: " If obj. Ent. Object. Name = "Ac. Db. Block. Reference" Then Set obj. Ref = obj. Ent If obj. Ref. Has. Attributes Then var. Atts = obj. Ref. Get. Attributes Set obj. Att = var. Atts(0) obj. Att. Text. String = "We changed this" End If The Auto. CAD End Sub APIs by Andrew Canfield

AUTOLISP API • Autolisp derleyici (compiler) olarak Autocad komut ekranını kullanır. Yani hem komut

AUTOLISP API • Autolisp derleyici (compiler) olarak Autocad komut ekranını kullanır. Yani hem komut akışını hem de çizim ekranını aynı anda takip edebilirsiniz. • Çoğu kullanıcının Autolisp’te çalışmasının nedeni bu dilde rahat etmeleri ve en hızlı bu dilde yazılım geliştirebilmeleridir. • 2000 yılına kadar, VBA Autocad’e tam olarak uyarlanmadan önce, çok sayıda Autolisp kütüphanesi geliştirilmiştir. o Autolisp ile çalışmak rahat geliyorsa, o Autocad komutlarını iyi biliyorsanız Autolisp sizin için uygun API’dır. The Auto. CAD APIs by Andrew Canfield

AUTOLISP API ÖRNEK (defun C: chng. Att () (setq Mainent (entsel)) (setq ent. List

AUTOLISP API ÖRNEK (defun C: chng. Att () (setq Mainent (entsel)) (setq ent. List (entget (car Mainent))) (setq ent. Att (entget (entnext (cdr (assoc -1 ent. List))))) (setq ent. New. Att. Val (subst (cons 1 "We changed this") (assoc 1 ent. Att) ) (entmod ent. New. Att. Val) (entupd (car Mainent)) (princ) ) The Auto. CAD APIs by Andrew Canfield

3. AUTOLISP FONKSİYONLARI Fonksiyon: Autolisp’in uygulaması için önceden belirlenmiş komutlar dizisidir. • Fonksiyonları 3

3. AUTOLISP FONKSİYONLARI Fonksiyon: Autolisp’in uygulaması için önceden belirlenmiş komutlar dizisidir. • Fonksiyonları 3 bölümde inceleyebiliriz 1. OPERATÖRLER - Kullanıcıdan verileri alır 2. İŞLEMCİLER - Verileri manipüle eder 3. KOMUTLAYICILAR - Autocad’e komut gönderir

3. 1. OPERATÖR FONKSİYONLAR • Kullanıcının veri girmesini sağlayan fonksiyonlardır. • Kullanıcıdan alınan veri

3. 1. OPERATÖR FONKSİYONLAR • Kullanıcının veri girmesini sağlayan fonksiyonlardır. • Kullanıcıdan alınan veri türleri: – Sayı – String (Karakterler dizisi) – Nokta – Mesafe – Autocad objesi/objeleri

3. 1. OPERATÖR FONKSİYONLAR Örnek: • (setq p (getpoint "n. Referans kot noktasını seçiniz:

3. 1. OPERATÖR FONKSİYONLAR Örnek: • (setq p (getpoint "n. Referans kot noktasını seçiniz: ")) getpoint : Kullanıcıdan nokta seçmesini ister. • (setq refkot (getreal "n. Referans kot degerini girin: ")) getreal : Kullanıcıdan sayı girmesini ister.

3. 2. İŞLEMCİ FONKSİYONLAR • Kullanıcıdan gelen verileri üzerinde işlem yapmayı sağlayan fonksiyonlardır.

3. 2. İŞLEMCİ FONKSİYONLAR • Kullanıcıdan gelen verileri üzerinde işlem yapmayı sağlayan fonksiyonlardır.

3. 2. İŞLEMCİ FONKSİYONLAR Örnek: • (setq p 1 (polar p (/ pi 3)

3. 2. İŞLEMCİ FONKSİYONLAR Örnek: • (setq p 1 (polar p (/ pi 3) 3)) • (setq p 2 (polar p 1 pi 3)) Yerleştirilecek üçgenin köşelerini belirle.

3. 3. KOMUT FONKSİYONLARI • Autocad’e komut göndererek yeni objeler yaratan veya mevcut objelerin

3. 3. KOMUT FONKSİYONLARI • Autocad’e komut göndererek yeni objeler yaratan veya mevcut objelerin veritabanlarını değiştiren fonksiyonlardır.

3. 3. KOMUT FONKSİYONLARI • Örnek: • (command "pline" p p 1 p 2

3. 3. KOMUT FONKSİYONLARI • Örnek: • (command "pline" p p 1 p 2 "c") p, p 1 ve p 2 noktalarından geçen polyline çizer. • (command "text" "j" "bl" p 1 1 0 (rtos ref 2 2)) p 1 noktasına kot değerini yazar.

3. AUTOLISP GEÇMİŞİ • LISP, 50’li yılların ortalarında John Mc. Carthy tarafından yazılmış, 70’li

3. AUTOLISP GEÇMİŞİ • LISP, 50’li yılların ortalarında John Mc. Carthy tarafından yazılmış, 70’li yıllarda “Yapay Zeka” (AI) uygulamaları için kullanılmış yazılım dilidir. • LISP, diğer programlama dillerinden farklı olarak, parantezli – önden eklemeli notasyona mensuptur. (fully parenthesized Polish prefix notation) • Autolisp 80’li yıllarda yazılmış, Autocad yazılım programlama arabirimi olarak tasarlanmış, LISP lehçesidir.

3. Önden Eklemeli Notasyon AUTOLISP (setq a (+ a 4)) MATLAB a=a+4 GÖREV •

3. Önden Eklemeli Notasyon AUTOLISP (setq a (+ a 4)) MATLAB a=a+4 GÖREV • Değişken atama (if (< a 0) (setq a (* -1 a)) (setq a 0) ) if a < 0 a = -1 * a else a=0 end • Koşullandırma (setq pr 1) (while (> a 0) (setq pr (* pr a)) ) pr=1 while a > 0 pr = pr * a end • Döngü

3. Önden Eklemeli Notasyon AUTOLISP (defun isim (x) (setq y (sin (* 2 x)))

3. Önden Eklemeli Notasyon AUTOLISP (defun isim (x) (setq y (sin (* 2 x))) (progn y) ) MATLAB function y= isim(x) y= sin (2*x) end GÖREV Fonksiyon Tanımlama İsim x y : fonksiyon ismi : input : output

4. PROGRAMLAMA VE AVANTAJLARI Başlangıç seviyesinde • Programlama dili (syntax) yapmak istediğimiz işin önünde

4. PROGRAMLAMA VE AVANTAJLARI Başlangıç seviyesinde • Programlama dili (syntax) yapmak istediğimiz işin önünde bir bariyer olabilir. • Elimizdeki mevcut araçlarla programı işlemek ve test etmek zaman alabilir. • Programlama dilini ve yapısını öğrenmek zor olabilir. The Benefits of Understanding Programming by Luke Robinson

4. PROGRAMLAMA VE AVANTAJLARI • Fakat bu güçlükler programlamayı daha çekici hale de getirebilir.

4. PROGRAMLAMA VE AVANTAJLARI • Fakat bu güçlükler programlamayı daha çekici hale de getirebilir. • “Problem çözümleme” becerisi, programlama çalışmalarıyla geliştirilebilir. • Ancak bu beceri, “gerçekçi” düşünce yollarıyla olması gereken yönde geliştirilebilir. The Benefits of Understanding Programming by Luke Robinson

4. PROGRAMLAMA VE AVANTAJLARI • Programın gerçekleştireceği çözüm basamakları (algoritma) oluşturulduktan sonra kodlamaya başlanmalıdır.

4. PROGRAMLAMA VE AVANTAJLARI • Programın gerçekleştireceği çözüm basamakları (algoritma) oluşturulduktan sonra kodlamaya başlanmalıdır. Program, yalnızca bilgisayarın gerçekleştirmesini istediğimiz komutlar zinciridir. The Benefits of Understanding Programming by Luke Robinson

4. PROGRAMLAMA VE AVANTAJLARI • Verimli olarak program yazabilmek için -Programın kontrol yapısını ve

4. PROGRAMLAMA VE AVANTAJLARI • Verimli olarak program yazabilmek için -Programın kontrol yapısını ve nasıl çalıştığını -Veri türlerini -Programlama dilini kavramak gerekir. The Benefits of Understanding Programming by Luke Robinson

4. PROGRAMLAMA VE AVANTAJLARI • Programlama, yaptığımız işleri hızlandırarak bireysel gelişim sağlamanın yanı sıra,

4. PROGRAMLAMA VE AVANTAJLARI • Programlama, yaptığımız işleri hızlandırarak bireysel gelişim sağlamanın yanı sıra, günümüz teknolojisini anlamak açısından önemlidir. The Benefits of Understanding Programming by Luke Robinson