AutoCAD'de LISP ile Tekrarlayan İşleri Otomatikleştirme
Beceri rehberi

AutoCAD'de LISP ile Tekrarlayan İşleri Otomatikleştirme

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 5 dk okuma

AutoLISP ile tekrarlayan AutoCAD işlerini otomatikleştirme: ilk komutu yazma, APPLOAD ile yükleme, açılışta otomatik yükleme ve sık hatalar.

Hangi işler LISP ile otomatikleşir

AutoLISP, AutoCAD'in içinde çalışan bir betik dilidir. Elle yapılan tekrar işlerini tek komuta indirir. Tipik adaylar şunlardır: seçili nesneleri belirli bir katmana taşımak ve rengini sabitlemek, çizimdeki tüm blokların listesini çıkarmak, belirli bir yazı stilini topluca uygulamak, çizimi teslimden önce temizlik komutlarıyla sırayla geçirmek, aynı ölçüyü verilen koordinatlara yerleştirmek.

Bir iş LISP'e değer mi diye şu ölçüt işe yarar: aynı komut zincirini haftada birkaç kez elle tekrarlıyor ve bunu yaparken yalnızca birkaç değer değişiyorsanız otomasyon adayıdır. Bir kez yapılacak işe rutin yazmak zaman kaybıdır. Çoğu ofiste ilk yazılan rutinler küçüktür: katman kurulumu, yazdırma ayarı ve dosya hazırlama.

LISP mi, makro mu, başka bir yol mu

Her otomasyon LISP gerektirmez. Aynı komutu kısa yazmak için komut alias'ı yeterlidir. Sabit bir komut dizisini bire bir tekrarlamak için script dosyası (SCR) ya da arayüzdeki eylem kaydedici yeterli olabilir. Bu araçlar mantık kuramaz: ne seçildiğine, kaç nesne bulunduğuna veya kullanıcıdan gelen cevaba göre dallanamazlar.

LISP, karar vermeniz gereken durumlarda devreye girer: nesne türüne göre farklı işlem yapmak, kullanıcıya soru sormak, bir nesnenin özelliğini okuyup başkasına aktarmak, döngüyle birçok nesneyi sırayla işlemek. Büyük ve karmaşık işler için .NET veya diğer API'ler vardır; ancak masaüstünde günlük çizim işlerinin çoğu LISP ile çözülür.

İlk komutu yazmak

Komut satırından çalışan bir LISP fonksiyonu, adı c: ile başlayan bir tanımdır. c: sonrasındaki metin komutun adı olur. Aşağıdaki örnek, seçilen nesneleri YAZI adlı bir katmana taşır; katmanın çizimde var olması gerekir.

  • (defun c:KATMANTASI (/ ss)
  • (prompt "\nSelect objects: ")
  • (setq ss (ssget))
  • (if ss (command "_.CHPROP" ss "" "_LA" "YAZI" ""))
  • (princ)
  • )

Parçaları sırayla okuyun: defun yeni bir fonksiyon tanımlar; parantez içindeki bölge yerel değişkenleri belirtir, / işaretinden sonra yazılan ss yalnızca bu rutinde yaşar. ssget kullanıcıdan seçim ister ve seçim kümesi döndürür. if seçim yapılmışsa devam eder. command satırı, komut satırına elle yazacağınız komut ve cevapları sırayla gönderir; başına nokta ve alt çizgi koymak komutun yeniden tanımlanmış ya da başka dilde olsa da doğru çalışmasını sağlar. Son satırdaki princ, rutin bittiğinde komut satırına gereksiz bir geri dönüş değeri yazılmasını engeller.

Kodu bir metin düzenleyicide yazıp .lsp uzantısıyla kaydedin. Düzenleyicinin gelişmiş tırnak işaretlerini eklemediğinden emin olun; yalnızca düz tırnak kullanılmalıdır.

Yükleme: APPLOAD, load ve açılışta otomatik yükleme

Dosyayı yüklemek için APPLOAD komutunu çalıştırın, dosyayı seçip Load düğmesine basın. Güvenlik uyarısı çıkarsa yeniden Load seçeneğini kullanın. Dosya bir arama yolundaysa komut satırında (load "dosyaadi") yazmak da yeterlidir; uzantı gerekmez. Arama yolunda olmayan dosya için tam yol vermeniz gerekir.

Her açılışta rutini elle yüklememek için APPLOAD penceresindeki Startup Suite bölümüne dosyayı ekleyin. Autodesk yardımı, her yeni veya açılan çizimde yüklenmesini istediğiniz rutin kitaplığı için acaddoc.lsp dosyasını önerir; bu dosya AutoCAD ile hazır gelmez, kendiniz oluşturur ve bakımını yaparsınız. Autodesk topluluk tartışmalarında sık görülen bir sorun, dosya yüklendiği hâlde komutun çalışmamasıdır; çoğu zaman dosyanın klasörünü Options penceresinin Files sekmesindeki Support File Search Path listesine eklemek çözer.

Dikkat: defun ile tanımlanan komutlar yalnızca tanımlandıkları çizimde ve o çizim açıkken geçerlidir. Bu yüzden yeni çizim açtığınızda rutin yoksa startup yüklemesini kontrol edin.

Güvenilir rutin yazmak: değişkenler, hata yakalama, geri alma

Çalışan ilk rutinden sonra şu alışkanlıklar kalitenizi yükseltir. Yerel değişkenler: fonksiyon başlığında / işaretinden sonra tüm geçici değişkenleri yazın; yazmazsanız değişkenler genel olur ve başka rutinlerle karışır.

Sistem değişkenlerini geri yüklemek de önemlidir. Rutin nesne yakalamayı (OSMODE) veya komut yankısını (CMDECHO) değiştiriyorsa, önce getvar ile mevcut değeri saklayın, iş bitince setvar ile geri verin. Aksi hâlde kullanıcı rutin bittikten sonra yakalama ayarının kapandığını fark eder.

Hata yakalama da gerekir. Kullanıcı ESC ile rutini yarıda keserse sistem değişkenleri değişmiş kalır. Kendi *error* fonksiyonunuzu tanımlayarak yarım kalan durumda ayarları geri alabilirsiniz. Çalışan bir rutini yaygınlaştırmadan önce boş bir çizimde, sonra gerçek çizimin kopyasında deneyin; veri kaybı riski olan rutinler önce kopya üstünde sınanır.

Sık yapılan hatalar

Başlangıçta en çok karşılaşılanlar: parantezlerin dengesiz olması, yazım hatasıyla bir fonksiyonun bulunamaması, tek tırnak ile çift tırnağın karıştırılması, command çağrısında komutun beklediği cevap sırasının yanlış yazılması, yerel değişkeni bildirmemek, Türkçe karakter içeren metinlerin farklı kod sayfasında bozulması. Bu sonuncusu için kod içindeki mesajları sade harflerle yazmak ya da dosyayı Autodesk'in desteklediği kodlamayla kaydetmek sorunu önler.

Bir diğer hata kaynağı, internetten indirilen hazır LSP dosyalarını incelemeden çalıştırmaktır. LISP dosyası bilgisayarınızda kod çalıştırabildiği için güvenilir olmayan kaynaktan gelen rutinleri açmadan önce okuyun. Ofis ortamında rutinleri tek bir paylaşılan klasörde tutmak, hangi sürümün kimde olduğunu bilmenizi ve güvenilir yollar tanımlamanızı kolaylaştırır.

Hata ayıklarken rutini küçük parçalara bölmek en kısa yoldur. Her adımda değerleri komut satırına yazdırmak (prompt veya print) hangi satırın beklenmedik sonuç verdiğini gösterir.

Öğrenme yolu ve bu becerinin yeri

Yol şöyle ilerler: önce AutoCAD komutlarını ve sistem değişkenlerini iyi bilmek, çünkü LISP onları çağırır. Sonra command ile komut dizisi çalıştıran basit rutinler, ardından ssget ile nesne seçimi ve filtreleme, sonra nesne özelliklerini okuyup değiştiren entity işlemleri, en son da kullanıcı etkileşimi ve hata yakalama. Autodesk, AutoLISP için Visual Studio Code eklentisi ve adım adım öğretici yayımlar; yeni başlayanlar için dosya oluşturma ve yükleme akışını oradan izlemek yararlıdır.

Mindset'in AutoCAD ile Teknik Çizim Uygulamaları programında LISP ayrı bir modül olarak yer almaz. Programın Düzenleme Komutları ve Çizim Verimliliği, Katman Disiplini ve Nesne Özellikleri, Blok, Öznitelik ve Kütüphane Kullanımı modülleri ise otomasyonun dayanağı olan komut ve düzen bilgisini verir. Önce bu temeli sağlamlaştırmak, LISP'e geçişi hızlandırır; çünkü otomatikleştirilecek işi tanımlamak için işi elle iyi bilmek gerekir.

İlgili Mindset programı

AutoCAD ile Teknik Çizim Uygulamaları

Sık sorulanlar

Sık sorulan sorular

AutoLISP yazmak için programlama bilmem gerekir mi?

Gerekmez, ama mantıksal düşünmek yardımcı olur. Küçük rutinler komut satırında yaptığınız adımların bir fonksiyon içinde sıralanmasından ibarettir. Önce kısa işleri otomatikleştirin; değişken, döngü ve koşul gibi kavramları ihtiyaç duydukça öğrenin.

AutoCAD LT'de LISP çalışır mı?

AutoCAD LT'nin güncel sürümlerinde AutoLISP desteği bulunur; eski LT sürümlerinde LISP çalışmaz. Kullandığınız sürümün desteğini ve varsa kısıtlarını Autodesk'in o sürüme ait belgelerinden kontrol edin, çünkü kapsam sürümler arasında değişebilir.

Yazdığım LISP komutu yeni çizimde neden yok?

defun ile tanımlanan komut, tanımlandığı çizimde ve o çizim açıkken geçerlidir. Her çizimde kullanmak için dosyayı APPLOAD içindeki Startup Suite'e ekleyin ya da acaddoc.lsp dosyasından yükleyin. Dosya klasörü arama yolunda değilse komut bulunamaz.

LISP dosyalarını başkalarıyla paylaşmak güvenli mi?

Rutinler bilgisayarınızda kod çalıştırdığı için yalnızca güvendiğiniz kaynaklardan alınmalı ve çalıştırılmadan önce okunmalıdır. Ofis içinde ortak klasör, sürüm kontrolü ve yetkili bir kişinin onayı bu riski belirgin biçimde düşürür; bilinmeyen kaynaklardan gelen dosyaları iş çiziminizde denemeyin.

LISP yerine Dynamo veya başka bir araç öğrenmeli miyim?

Çizim ortamı AutoCAD ise ve işin kapsamı çizim nesneleri üzerindeyse LISP doğrudan çözümdür. Revit gibi bilgi modelleme araçları için farklı betik araçları geçerlidir. Hangi yazılımla çalıştığınıza ve otomatikleştireceğiniz işin türüne göre seçim yapın.