Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

AUTOLISP VE PROJE MÜHENDİSLİĞİNDE UYGULAMALARI

Benzer bir sunumlar


... konulu sunumlar: "AUTOLISP VE PROJE MÜHENDİSLİĞİNDE UYGULAMALARI"— Sunum transkripti:

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

2 Autolisp Nedir? Diğer AUTOCAD API’ları Autolisp Fonksiyonları Programlama ve Avantajları 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 The AutoCAD APIs by Andrew Canfield
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<AcDbBlockReference> pRef(_Id,AcDb::kForRead); if(pRef.openStatus()!=Acad::eOk) //Open failed pIttr = pRef->attributeIterator(); while(!pIttr->done()) _attId = pIttr->objectId(); AcDbObjectPointer<AcDbAttribute> 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 VB API ÖRNEK The AutoCAD APIs by Andrew Canfield
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 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. Autolisp ile çalışmak rahat geliyorsa, Autocad komutlarını iyi biliyorsanız Autolisp sizin için uygun API’dır. The AutoCAD APIs by Andrew Canfield

11 AUTOLISP API ÖRNEK (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) 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 OPERATÖRLER - Kullanıcıdan verileri alır İŞLEMCİLER - Verileri manipüle eder 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))
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
AUTOLISP MATLAB GÖREV (setq a (+ a 4)) Değişken atama a = a + 4 (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ü

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

22 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

23 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

24 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

25 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

26 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


"AUTOLISP VE PROJE MÜHENDİSLİĞİNDE UYGULAMALARI" indir ppt

Benzer bir sunumlar


Google Reklamları