Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

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

Benzer bir sunumlar


... konulu sunumlar: "AUTOLISP VE PROJE MÜHENDİSLİĞİNDE UYGULAMALARI SUNAN: Tolga Gürol."— Sunum transkripti:

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

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

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

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

5 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 AutoCAD APIs by Andrew Canfield

6 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 AutoCAD APIs by Andrew Canfield

7 OBJECT ARX API ÖRNEK void chngAtt() { ads_name entres; ads_point ptres; AcDbObjectId _Id, _attId; AcDbObjectIterator *pIttr = NULL; if(acedEntSel("Select a Block Reference", entres, ptres) != RTNORM ) { //Selection failed return; } acdbGetObjectId(_Id, entres); AcDbObjectPointer pRef(_Id,AcDb::kForRead); if(pRef.openStatus()!=Acad::eOk) { //Open failed return; } pIttr = pRef->attributeIterator(); while(!pIttr->done()) { _attId = pIttr->objectId(); AcDbObjectPointer pAtt(_attId,AcDb::kForWrite); if(pAtt.openStatus()==Acad::eOk) { pAtt->setTextString("We changed this"); break; } pIttr->step(); } delete pIttr; } The AutoCAD APIs by Andrew Canfield

8 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 AutoCAD APIs by Andrew Canfield

9 Option Explicit Sub chngAtt() Dim objEnt As AcadObject Dim objRef As AcadBlockReference Dim varAtts As Variant Dim objAtt As AcadAttributeReference Dim emptyPt As Variant ThisDrawing.Utility.GetEntity objEnt, emptyPt, "Select Block: " If objEnt.ObjectName = "AcDbBlockReference" Then Set objRef = objEnt If objRef.HasAttributes Then varAtts = objRef.GetAttributes Set objAtt = varAtts(0) objAtt.TextString = "We changed this" End If End Sub VB API ÖRNEK The AutoCAD APIs by Andrew Canfield

10 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 AutoCAD APIs by Andrew Canfield

11 (defun C:chngAtt () (setq Mainent (entsel)) (setq entList (entget (car Mainent))) (setq entAtt (entget (entnext (cdr (assoc -1 entList))))) (setq entNewAttVal (subst (cons 1 "We changed this") (assoc 1 entAtt) entAtt) ) (entmod entNewAttVal) (entupd (car Mainent)) (princ) ) AUTOLISP API ÖRNEK The AutoCAD APIs by Andrew Canfield

12 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

13 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

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

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

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

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

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

19 3. AUTOLISP GEÇMİŞİ • LISP, 50’li yılların ortalarında John McCarthy 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.

20 3.Önden Eklemeli Notasyon (setq a (+ a 4)) a = a + 4 AUTOLISPMATLABGÖ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 • Döngü (setq pr 1) (while (> a 0) (setq pr (* pr a)) ) pr=1 while a > 0 pr = pr * a end • Koşullandırma

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

22 • 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. 4.PROGRAMLAMA VE AVANTAJLARI Başlangıç seviyesinde The Benefits of Understanding Programming by Luke Robinson

23 • 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

24 • 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. 4.PROGRAMLAMA VE AVANTAJLARI The Benefits of Understanding Programming by Luke Robinson

25 • 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. 4.PROGRAMLAMA VE AVANTAJLARI The Benefits of Understanding Programming by Luke Robinson

26 • 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 4.PROGRAMLAMA VE AVANTAJLARI


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

Benzer bir sunumlar


Google Reklamları