AutoLISP ve Visual LISP, teknik çizimlerde otomasyonu kolaylaştıran güçlü
araçlar sunarken, farklı veri tipleri arasında dönüşüm yapmayı sağlayan
fonksiyonları da içinde barındırır.
Bu dönüşüm işlemleri sayesinde sayılar, metinler, açılar, koordinatlar ve
listeler arasında esnek geçişler sağlanabilir. Özellikle kullanıcıdan alınan
verilerin işlenmesi, metin tabanlı bilgilerle sayısal verilerin entegre
edilmesi veya geometriyle ilgili hesaplamalarda bu fonksiyonlar büyük kolaylık
sağlar.
Dönüştürme fonksiyonlarını etkili kullanmak, yazılan kodun daha okunabilir,
daha esnek ve daha güçlü olmasını sağlar.
itoa, Integer toASCII kısaltmasıdır.
Tamsayıyı (integer) metin (string) formatına dönüştürmek için kullanılır.
Genellikle sayısal değerleri ekranda göstermek, dosya işlemlerinde kullanmak
veya metin tabanlı işlemler yapmak için gereklidir.
Kullanımı:
(itoa tamsayı)
tamsayı : Dönüştürülecek tamsayı değer. Parametre olarak
integer veri türü haricinde bir değer girildiğinde hata oluşur. Reel
sayılar için rtos fonksiyonu kullanılmalı ya da reel sayı önce fix
fonksiyonu ile tamsayıya dönüştürülmeli. Dönüş Değeri: Sayının
metin karşılığı (string).
Bu fonksiyonun yaptığı işlemin tersi için atoi kullanılır.
atoi, ASCII to integer kısaltmasıdır. Sayı içeren
metni(string) tamsayıya(integer) dönüştürür.
Kullanımı:
(atoi metin)
metin : String olarak girilen argümandaki sayıyı tamsayıya(integer)
dönüştürür. Metin sayı ile başlıyorsa sayı kısmını alır. Sayı ile başlamayan
metinler 0 sonucunu verir.
Düzenli olarak kullandığınız AutoLisp uygulamalarını her yeni dosya açılışında tekrar yüklemek sıkıcı olabilir. Neyse ki, AutoCAD programın AutoLisp
uygulamalarını otomatik olarak yüklemeye izin vermektedir.
Aşağıda AutoLisp
uygulamalarını otomatik yüklemek için kullanılabilecek yöntemleri
açıkladım. Uygulanacak bu yöntemler AutoCAD sürümlerine göre farklılık
gösterebilir.
Yüklenecek AutoLisp dosyasını seçip Startup Suite'deki çanta simgesi
üzerine bırakın ya da Contents... butonunu tıklayın. Açılan pencerede
Add... tıklayın. Yüklenecek AutoLisp dosyasını seçip
Aç tıklayın. Seçili dosya listeye eklenecektir.
Artık her AutoCAD ve yeni dosya açılışlarında listedeki uygulamalar otomatik olarak
yüklenecek ve AutoLisp dosyasındaki komutları kullanabileceksiniz. Şu anki açık olan AutoCD dosyasında da Autolisp dosyayı yüklemek için Load butonunu tıklayın. Sonra Close butonunu tıklayın.
2) acad.lsp veya acaddoc.lsp ile yükleme
acad.lsp ve acaddoc.lsp dosyaları, AutoLISP kodlarını AutoCAD oturumu sırasında otomatik olarak çalıştırmak için kullanılır. Ancak, bu iki dosyanın kullanım amaçları ve işlevleri biraz farklıdır.
acad.lsp
acad.lsp, AutoCAD başlangıç dizininde bulunan ve AutoCAD uygulaması her açıldığında bir defa otomatik olarak yüklenen bir AutoLISP başlangıç dosyasıdır. Bu dosya, genellikle AutoCAD oturumunun başlatılmasında genel işlevler ve tanımlar içerir. Örneğin, belirli bir kullanıcı arabirimi düzenini ayarlama, varsayılan katmanları yükleme, özel menüler oluşturma gibi işlevleri gerçekleştirebilir.
Sayfadaki kodları seçip kopyalayın bir metin editörüne (örneğin Windows Not Defteri uygulaması) yapıştırın. Sonra kodları uzunlukyaz.lsp olarak kaydedin.
1) Sürükle bırak ile yükleme
En basit ve kolay yöntem budur. Dosyayı fare ile sürükleyip AutoCAD çizim alanına bırakın.
Dosyanın güvenli olmayabileceği ile ilgili uyarı penceresi çıkabilir.
Çıkan uyarı penceresinde;
Always Load tıkladığınızda dosya yüklenir ve sonraki yüklemelerinizde bu uyarı bir daha gelmez.
Load Once tıkladığınızda dosya yüklenir ancak sonraki yüklemelerde yine aynı uyarı gelir.
Do Not Load tıklarsanız dosya yüklenmez işlem iptal edilir.
Duruma göre 1. veya 2. buton ile dosyayı yükleyin.
Artık AutoLisp programını çalıştırabilirsiniz.
Bu yöntemle yüklenen AutoLisp program, yalnızca sürüklenip bırakılmış çizim dosyasında çalışır.
Lisp (List Processing = Liste İşleme) 1958 yılında John McCarthy tarafından geliştirilen ve kullanımda olan en eski ve en güçlü programlama dillerinden biridir. Yapay zeka alanındaki ilk önemli dildir. Lisp, temel olarak verileri özgün bir yöntem olan bağlam listeleri kullanarak temsil eder. Simgelerle ifade edilen sembolik hesaplama yetenekleri sayesinde yapay zeka ve sembolik mantık için ideal bir dil olarak popülerlik kazanmıştır.
Lisp'in temel özellikleri:
Listeler: Lisp, bağlam listeleri adı verilen veri yapısını temel alır. Bu, basit elemanların listeler halinde bir araya gelerek karmaşık veri yapıları oluşturduğu anlamına gelir.
Sembolik Hesaplama: Lisp, sembolik ifadeleri ve semboller arasındaki matematiksel ve mantıksal işlemleri kolayca işleyebilir. Bu özellik, lisp'i yapay zeka ve sembolik mantık problemlerinin çözümünde etkili kılar.
Makro Sistem: Lisp, meta programlama için güçlü bir makro sistemi sunar. Bu, yeni dil yapıları oluşturmak ve programları genişletmek için kullanılabilir. Makrolar, Lisp kodu üretmek için kullanılır ve programcılara yeni dil yapıları ekleyerek kod tekrarını azaltmaya yardımcı olur.
Rekürsif: Lisp, rekürsif(özyinelemeli) fonksiyonları destekleyen ilk programlama dillerinden biridir. Rekürsif(kendini çağıran) fonksiyonlar, bir problemi daha küçük alt problemlere bölmek ve çözmek için fonksiyonun kendi kendini çağırmasını sağlar.
Çöp toplama (Garbage Collection): Lisp, otomatik hafıza yönetimine sahip bir dil olarak, programcının bellek yönetimiyle uğraşmasını gerektirmez. Garbage collection, program tarafından ayrılan ancak artık ihtiyaç duyulmayan belleğe çöp denir . Çöp toplama, Lisp'te manuel bellek yönetimini basitleştirmek için 1959 civarında Amerikalı bilgisayar bilimcisi John McCarthy tarafından icat edildi. Çöp toplama, bir programın toplam işlem süresinin önemli bir bölümünü alabilir ve sonuç olarak performansı etkileyebilir.
Lisp, yapay zeka alanında önemli bir rol oynamış ve hala bazı uzman sistemler ve doğal dil işleme uygulamalarında kullanılmaktadır.
AutoLISP nedir?
AutoLISP, Autodesk firması tarafından geliştirilen AutoCAD yazılımında kullanılmak üzere özelleştirme ve otomasyon için oluşturulan bir LISP türevidir. AutoCAD, mimarlar, mühendisler ve tasarımcılar tarafından kullanılan bir bilgisayar destekli tasarım (CAD) programıdır. AutoLISP, AutoCAD'deki çeşitli görevleri otomatikleştirmek ve kullanıcıya özel komutlar ve işlevler eklemek için kullanılır.
AutoLISP, standart Lisp diline benzer bir sözdizimine sahiptir ancak AutoCAD'a özgü komutları ve işlevleri de içerir. AutoLISP, AutoCAD çizimlerini okuma, yazma ve düzenleme işlemlerini yapmak için kullanılabilir. AutoLISP, CAD projelerini hızlandırmak, tekrarlayan görevleri azaltmak ve kullanıcıların ihtiyaçlarına özelleştirilmiş çözümler sunmak için yaygın olarak kullanılır.
VisualLISP nedir?
VisualLISP, AutoLISP'in bir uzantısıdır ve AutoCAD yazılımında görsel programlama araçları sunar. VisualLISP, AutoCAD'de kullanıcı arayüzüne, diyalog kutularına ve grafik nesnelere erişim sağlar. Bu sayede, kullanıcı dostu arayüzlere sahip eklentiler oluşturmak ve karmaşık görevleri daha kolay gerçekleştirmek mümkün olur. Bu, AutoCAD çizimlerini yönetmek için daha güçlü ve karmaşık uygulamalar geliştirmeyi mümkün kılar.
AutoCAD'in içerisine entegre edilmiş olan VisualLISP Editor, AutoLISP kodlarının yazılması, düzenlenmesi, çalıştırılması, derlenmesi ve hata ayıklanması için gelişmiş bir ortam sağlar.
AutoCAD 2021 sürümünden itibaren varsayılan Visual Lisp editörü Visual Studio Code uygulamasıdır.
VisualLISP Editor'ü kullanmak için LISPSYS sistem değişkeni değeri 0 yapılıp AutoCAD yeniden başlatılmalı.
Sonrasında komut satırından VLIDE veya VLISP girilerek VisualLISP Editor çalıştırılır.
AutoCAD kullanıcıları çizimlerde nesnelerin uzunluğunu sıklıkla hesaplama durumunda kalır. Bu işlemi manuel olarak yapmak zaman alıcı ve hata yapmaya açık olabilir. Neyse ki, AutoLISP programlama dili ile bu sürec otomatikleştirilebilir.
Aşağıdaki AutoLisp kodları, AutoCAD'de bir nesnenin uzunluğunu hesaplayıp ve sonucu bir metin nesnesi olarak çizimim üzerine ekler.
Bu kod parçacığı, kullanıcının seçtiği geçerli bir nesnenin uzunluğunu hesaplar ve bu uzunluğu bir metin nesnesi olarak çizime ekler.
; Nesne uzuluğu, nesne üzerinde bir konuma eklenir
; Seçilebilecek geçerli nesneler:
; LINE, POLYLINE, LWPOLYLINE, ARC, CIRCLE, ELLIPSE, SPLINE
; AutoCAD komut satırından UY ya da UZUNLUKYAZ
; girilerek çalıştırılır.
; Düzenleme: Mesut Akcan
; makcan@gmail.com
; mesutakcan.blogspot.com
; 14/07/2023
(vl-load-com)
(defun c:UY()
(c:UZUNLUKYAZ)
)
(defun c:UZUNLUKYAZ( / aci bpt cb2 cercevegenisligi
cerceveyuksekligi cpt ent gr mpt
pib2 pt1 pt2 pt3 pt4 spt tpt
uzunluk yazicerceve)
(if (and
; Kullanıcıdan nesne seçimi alınır ve ent değişkenine atanır
; Nesne seçiliyse
(setq ent (car (entsel "\nUzunluğu alınacak nesne: ")))
; VE
; seçili nesne
; LINE, POLYLINE, LWPOLYLINE, ARC,
; CIRCLE, ELLIPSE, SPLINE ise
(member (cdr (assoc 0 (entget ent)))
'("LINE" "POLYLINE" "LWPOLYLINE"
"ARC" "CIRCLE" "ELLIPSE" "SPLINE"))
)
(progn
(setq
; Seçilen nesnenin uzunluğu hesaplanır ve uzunluk değişkenine atanır
uzunluk (rtos (vlax-curve-getDistAtParam ent (vlax-curve-getEndParam ent)))
; Metin nesnesini ölçer ve metni çevreleyen çerçevenin köşegen koordinatlarını
; yaziCerceve değişkenine atanır
yaziCerceve (textbox (list (cons 1 uzunluk) (cons 40 (getvar "TEXTSIZE"))))
; Yazı çerçevesi yüksekliği hesaplanır ve cerceveYuksekligi değişkenine atanır
cerceveYuksekligi (- (cadadr yaziCerceve) (cadar yaziCerceve))
; Yazı çerçevesi genişliği hesaplanır ve cerceveGenisligi değişkenine atanır
cerceveGenisligi (- (caadr yaziCerceve) (caar yaziCerceve))
)
(princ "\nYazı konumu")
; Kullanıcıdan nokta seçimi istenir
(while (eq 5 (car (setq gr (grread t 5 0))))
(redraw)
; Seçilen noktanın bir liste olduğu kontrol edilir. Eğer nokta ise
(if (listp (setq sPt (cadr gr)))
(progn
(setq
; Seçilen noktaya en yakın nokta
cPt (vlax-curve-getClosestPointto ent sPt)
; İki nokta arasındaki açı
aci (angle cPt sPt)
; Başlangıç noktası
bPt (polar cPt aci (/ (getvar "TEXTSIZE") 2.))
; Bitiş noktası
tPt (polar bPt aci cerceveYuksekligi)
; Orta nokta
mPt (polar bPt aci (/ cerceveYuksekligi 2.))
pib2 (/ pi 2.) ; pi/2
cb2 (/ cerceveGenisligi 2.) ; cerceveGenisligi/2
; Köşe noktaları
pt1 (polar bPt (+ aci pib2) cb2)
pt2 (polar bPt (- aci pib2) cb2)
pt3 (polar tPt (+ aci pib2) cb2)
pt4 (polar tPt (- aci pib2) cb2)
)
; İşaretleyici vektörler çizilir
(grvecs (list -3 pt1 pt2 pt3 pt4 pt1 pt3 pt2 pt4))
)
)
)
(if (eq 3 (car gr)) ; Konum belirlendiyse. Fare ile tıklama
(progn
; açı= açı - 90°
(setq aci (- aci (/ pi 2.)))
(cond
; açı 90 - 180 arası ise açı = açı - 180°
((and (> aci (/ pi 2.)) (<= aci pi)) (setq aci (- aci pi)))
; açı 180 - 270 arası ise açı = açı + 180°
((and (> aci pi) (<= aci (* 1.5 pi))) (setq aci (+ aci pi)))
)
; Yazı oluşturulur ve çizime eklenir
(YaziYaz mPt uzunluk aci)
)
)
)
; Geçersiz bir nesne seçildiyse
(princ "\nGeçersiz nesne seçildi !")
)
(redraw) ; Çizimi yenile
(princ)
)
(defun YaziYaz (konum yaziMetni yaziAcisi)
(entmake
(list
(cons 0 "TEXT") ; Nesne türü (Text)
(cons 8 (getvar "CLAYER")) ; Katman adı
(cons 62 2) ; Renk indeksi. 2=Sarı renk
(cons 10 konum) ; Yazı konumu (nokta)
(cons 40 (getvar "TEXTSIZE")) ; Yazı boyutu
(cons 1 yaziMetni) ; Yazı içeriği
(cons 50 yaziAcisi) ; Yazı döndürme açısı
(cons 7 (getvar "TEXTSTYLE")) ; Yazı stili
(cons 71 0) ; 71: İç hizalama (0: Sol)
(cons 72 1) ; 72: Dış hizalama (1: Alt)
(cons 73 2) ; 73: Hizalama tipi (2: Ortala)
(cons 11 konum) ; 11: İkinci nokta (hizalama için kullanılır)
)
)
)
İşleyişi:
Kullanıcıdan bir nesne seçimi alınır ve seçilen nesne doğruluk kontrolü yapılır.
Eğer seçilen nesne geçerli bir nesne ise, uzunluğu hesaplanır ve bir metin nesnesi oluşturulur.
Metin nesnesinin konumu kullanıcıdan alınır.
Metin nesnesi çizime eklenir ve kullanıcıya sonuç gösterilir.
Kullanımı:
Kodları kopyalayıp uzunlukyaz.lsp adında metin dosyasına ekleyip kaydediniz.
AutoCAD 2012 ve üzerinde çalışır. AutoCAD 2022'de denenmiştir.
Bu yardımcı program AutoCAD programında izometrik perspektif çizimi ölçülendirmede kullanılır. Ok uçlarının ve yazıtipinin eğimi ölçülendirme yüzeyi ile uyumlandırılır. Yapılan ölçülendirmeler "isoDim-Ölçü " adlı katmana aktarılır.
AutoCAD 2012 ve üzerinde çalışır. AutoCAD 2022'de denenmiştir.
Bu yardımcı program AutoCAD programında izometrik perspektif çizimi
ölçülendirmede kullanılır. Ok uçlarının ve yazıtipinin eğimi ölçülendirme
yüzeyi ile uyumlandırılır. Yapılan ölçülendirmeler
"isoDim-Ölçü " adlı katmana aktarılır.
Katman özelliklerini değiştirmek isterseniz(zorunlu değil);
LAYER komutu / isoDim-Ölçü katmanı seçilir / özellikler
değiştirilebilir.
Belli bir düzende sıralı tekrar ettiğimiz Autocad komutlarını bir komutla tekrar yürütmek için Autocad içinde bulunan Lisp dilini kullanabiliriz. Lisp'e alternatif olarak Microsoft Office programlarında bulunan VBA'da (Visual basic makro dili) kullanılabilir ama Lisp daha yaygın olarak kullanılmaktadır.
Lisp ile AutoCAD programına yeni kullanışlı komutlar ekleme imkanına sahip oluruz. Bazı firmalar AutoCAD altında çalışan Lisp ile kodlanmış büyük kullanışlı programlar üretip satmaktadır.
Ayrıca internette bedava Lisp kodlarını da bulabilirsiniz.
Lisp Nedir?
LISP, List Processing (Liste işleme) kelimelerinin kısaltılmış halidir. John McCarthy'in icat ettiği eski ve güçlü programlama dillerinden biridir. Yapay zeka çalışmalarında kullanılır.
AutoLisp Nedir?
Lisp programlama dilinden türetilmiş bir makro dili olup, AutoCAD yazılımında kullanılmak üzere uyarlanmış ve geliştirilmiştir. AutoLisp ile kullanıcının AutoCAD'e yeni komutlar eklemesi ile daha verimli ve etkin kullanması sağlanmıştır.
AutoLisp ile AutoCAD'in hemen hemen tüm özelliklerine müdahale edilebilir, AutoCAD'in tüm komutları kullanılabilir. Hesaba dayalı otomatik çizimler oluşturulabilir, mevcut çizimler değiştirilebilir, dosyalar ile çalışılabilir, AutoCAD'in tüm sistem değişkenlerinde değişiklik yapabilir.
Visual LISP Nedir?
Visual LISP, AutoLISP programlama dilinin bir uzantısıdır. Visual LISP, AutoCAD'de yerleşik olarak kendi geliştirme ortamına sahiptir. İlk olarak 1997'de AutoCAD Sürüm 14 için ücretli bir eklenti olarak tanıtıldı, ancak Mart 1999'da AutoCAD 2000'e dahil edildi.
AutoLISP programlama dili tek başına da çok güçlüdür, ancak Visual LISP kullanarak AutoLISP ile çok daha fazlası yapılabilir. Visual LISP, Windows işletim sisteminin bölümlerine ve AutoLISP'in normalde erişemediği AutoCAD uygulamasına erişmenizi sağlar.
AutoLisp dosyaları salt metin editörleriyle (örneğin notepad) düzenlenebilse de AutoCAD içinde bulunan Visual LISP for AutoCAD ile düzenlenmesi daha kolay ve kullanışlı olacaktır. AutoLisp dosya uzantısı .lsp olmalıdır.
AutoLisp ile Programlama Nasıl Yapılır?
AutoCAD açık iken menüden Tools/AutoLisp/Visual Lisp Editor tıklayın.
6) Lisp ile AutoCAD komutu oluşturarak makro çalıştırma
AutoCAD'de programlama için kullanılan dillerden biri de LISP'dir. Lisp hakkında
başlangıç seviyesinde bir yazımı okumak için:
AutoLisp ile programlama: Orijine zumla
Autocad'de LISP kodlamak için AutoCAD ile birlikte kurulan
Visual Lisp for AutoCAD kullanılabilir ancak "Lisp ile AutoCAD komutu oluşturarak makro çalıştırma" için bunu kullanmayacağım. LISP kodları yazmak için Visual LISP şart
değildir. Herhangi bir metin editörü kullanılabilir.
VBA makro
kodlarının çalıştırılması için VBA içinde AutoCAD komut tanımlaması yoktur.
LISP'de ise LISP komutlarını çalıştıracak AutoCAD komut tanımlaması
yapılabiliyor. LISP'in bu özelliğinden faydalanarak oluşturduğumuz VBA
makrolara AutoCAD komutu tanımlayacağız. İşlem çok basittir. Bu iş için
LISP dillinde kodlamayı bilmek şart değildir. Eksen Çiz VBA makromuz
için LISP ile bir AutoCAD komutu oluşturacağız.
Bunun için; Bir metin editörü(Örneğin Windows Not Defteri =
notepad.exe, ya da
Notepad++) açıp aşağıdaki kodları ekleyin.
Dosyayı EksenCiz.lsp olarak kaydedin. Windows'da dosya uzantılarınız
gizli ise ayarlardan görünür yapın.
LISP kodlarındaki c:EC() Autocad komut satırından girilecek komut
adıdır(EC), alt satır ise bu komut girildiğinde buna karşılık gelen
komutu ve parametresini belirtir.
EC yerine başka bir ad
verilebilir. EKSENCIZ gibi. Lisp dosyayı AutoCAD'e yüklemek için
bir kaç yol var ancak burada en basit olanı göstereceğim. Masaüstüne
kaydettiğimiz EksenCiz.lsp dosyasını sürükleyip AutoCAD çizim alanına
bırakın. VBA makroları yüklerken olduğu gibi bir güvenlik uyarısı
gelecek. Burda Load Once tıklayın.
Bir dahakinde sormasını istemiyorsanız
Always Load tıklayın.
Artık komut satırından
EC girilerek Eksen Çiz VBA makrosu çalıştırılabilir. İlk
çalıştırmada VBA makro yüklü değilse dosyayı belleğe yükleyeceği için üstteki
gibi güvenlik uyarısı çıkabilir. Load Once tıklayın.
Eğer birden fazla VBA makro kodu varsa bunlara ayrı ayrı lsp dosya oluşturmak
şart değildir. Bir lsp dosyada tüm VBA makro kodları için ayrı ayrı
AutoCAD komutu tanımlanabilir.
AutoCAD'de verilen bayrak en'ine uygun Türk Bayrağı çizen AutoLisp kodları.
Kodları AutoCAD'e yüklemek için APPLOAD koutunu kullanın.
Açılan pencerede lisp dosyasını seçin LOAD tıklayın.
Komut satırından TC komutu ile Türk Bayrağı çizilir.
AutoLisp hakkında detaylı bilgi için AutoLisp ile programlama: Orijine zumla sayfama bakınız.
AutoCAD'de ISOPOLY komutu ile izometrik çokgeni kolaylıkla çizebilirsiniz. Normalde bu komut AutoCAD'de yok. Komutun çalışması için Lee Mac adlı programcının hazırladığı lisp programından faydalanabiliriz. IsoPoly Lisp kodlarını indirmek için Bağlantı IsoPoly Lisp kodları web sayfasında görmek için Bağlantı
AutoCAD'de verilen yarıçap ölçüsünde yıldız çizmek için iki farklı AutoLisp kodları aşağıdadır. Kodlar İnşaat Mühendisi Mehmet Şahin Güvercin'e aittir. Kendisine teşekkür ederiz.