AutoLISP Nedir? AutoCAD Otomasyonuna Sıfırdan Giriş
AutoLISP nedir, ne işe yarar? .lsp/.fas/.vlx farkı, güçlü ve zayıf yönleri, AutoLISP mi .NET mi karar tablosu ve ilk haftanız için öğrenme sırası.
Bu Yazıda
En kısa hâliyle: AutoLISP, AutoCAD'in içinde çalışan ve size kendi komutlarınızı yazma imkânı veren bir programlama dilidir. Bir .lsp dosyasına yazarsınız, AutoCAD'e yüklersiniz, komut satırına yazdığınız anda çalışır. Derleme yok, kurulum yok, proje dosyası yok — yazdığınız şey doğrudan çizim ortamının bir parçası olur.
Bu yüzden kırk yıldır ayakta. Ve bu yüzden hâlâ, "AutoCAD'de şu işi otomatikleştirebilir miyiz" sorusunun en hızlı cevabı çoğu zaman AutoLISP.
Gelin baştan başlayalım. Hiç kod yazmamış olsanız bile takip edebileceğiniz bir anlatım hedefliyorum: LISP'in AutoCAD içinde tam olarak nerede durduğunu, neyi çözdüğünü, neyi çözemediğini ve ne zaman başka bir yola geçmeniz gerektiğini konuşacağız.
AutoLISP, LISP adlı programlama dilinin AutoCAD için uyarlanmış bir sürümü. 1980'lerin ortasında AutoCAD'e eklendi ve o günden beri neredeyse hiç değişmeden duruyor — ki bu, bir yazılım için olağanüstü bir şey.
Üç özelliği onu AutoCAD dünyasında bu kadar kalıcı yaptı:
Yorumlanır, derlenmez. Yazdığınız metin dosyası doğrudan çalışır. Değişiklik yapıp yeniden yüklersiniz, saniyeler içinde sonucu görürsünüz. Bir .NET eklentisinde bu döngü dakikalar sürer.
Çizimin içinde yaşar. LISP kodu, AutoCAD'in çizim veritabanına doğrudan erişir. Ekrandaki nesneleri seçebilir, özelliklerini okuyabilir, değiştirebilir, yenilerini yaratabilir. Ayrı bir uygulama değil, çizim ortamının uzantısıdır.
Komut gibi davranır. Yazdığınız bir fonksiyonu, AutoCAD'in yerleşik komutlarından ayırt edilemeyecek şekilde komut satırına bağlayabilirsiniz. Kullanıcı açısından LINE ile sizin yazdığınız HIZLI-ANTET arasında hiçbir fark yoktur.
Bu üçü bir araya geldiğinde ortaya şu çıkıyor: kendi AutoCAD'inizi şekillendirebilirsiniz. Sizin firmanızın çalışma biçimine göre komutlar, sizin standartlarınıza göre kontroller, sizin çizim düzeninize göre otomasyonlar.
`.lsp` dosyası ne demek
AutoLISP kodu düz metin dosyasında durur ve uzantısı .lsp'dir. Not Defteri'yle bile açıp okuyabilirsiniz — bu, LISP'in en sevdiğim yanlarından biri: kod şeffaftır, kimse size kapalı bir kutu veremez.
Karşınıza çıkabilecek diğer uzantılar:
| Uzantı | Nedir |
|---|---|
.lsp | Düz AutoLISP kaynak dosyası — okunabilir, düzenlenebilir |
.fas | Derlenmiş LISP — hızlı çalışır ama kaynağı okunamaz |
.vlx | Birden fazla dosyanın paketlenmiş hâli |
.dvb | VBA makrosu — LISP değil, farklı bir dünya |
.arx / .dll | ObjectARX / .NET eklentisi — çok daha ağır bir katman |
Pratikte .lsp ile çalışacaksınız. .fas ve .vlx ise genellikle bir yazılım firması size kodunu vermeden bir araç sattığında karşınıza çıkar.
Soyut kalmasın; sahada LISP'in en çok kullanıldığı işler şunlar:
Katman ve çizim düzeni işleri. Katman oluşturma, renk ve çizgi tipi atama, dış kaynaktan gelen çizimleri firma standardına çekme. LISP'in en klasik kullanım alanı ve hâlâ en verimli olduğu yer.
Toplu düzenlemeler. Seçili tüm metinlerin yazı tipini değiştirmek, belirli bir katmandaki her şeyi silmek, tüm blokların ölçeğini düzeltmek. Elle yapıldığında yarım gün süren işler saniyelere iner.
Öznitelik (attribute) işleri. Bloklardaki öznitelikleri okumak, doldurmak, dışa aktarmak. Malzeme listesi çıkarmanın en pratik yolu genellikle budur.
Özel çizim komutları. Sizin ürününüze özgü bir şeyi tek komutla çizmek: standart bir bağlantı detayı, bir kesit sembolü, firma antetiniz.
Yazdırma ve çıktı. Sayfa düzeni ayarlarını uygulayıp toplu çıktı almak. Bir klasördeki tüm çizimleri aynı ayarlarla PDF'e basmak.
Veri çıkarma. Çizimden bilgi toplayıp bir metin veya CSV dosyasına yazmak. ERP'ye veri besleyen ekiplerin ilk otomasyonu genellikle bu oluyor.
Bu listeyi biraz açıp "AutoCAD'de tam olarak neler otomatikleştirilebilir" sorusuna ayrı bir yazıda daha ayrıntılı cevap verdim: AutoCAD'de neler otomatikleştirilebilir.
LISP'i anlamanın en kolay yolu, onu "AutoCAD'e komut yazdırmak" olarak düşünmek. Siz normalde komut satırına LINE yazar, iki nokta tıklar, Enter dersiniz. LISP de aynı şeyi yapabilir — ama sizin yerinize, hatasız ve saniyede yüz kez.
Bunun ötesinde iki şey daha yapabiliyor:
Çizim veritabanını doğrudan okuyabiliyor. Ekrandaki her nesne — çizgi, daire, metin, blok — aslında bir veri kaydı. LISP bu kayıtlara erişip "bu çizginin uzunluğu kaç", "bu metnin içeriği ne", "bu blok hangi katmanda" gibi soruların cevabını alabiliyor.
Toplu seçim yapabiliyor. "Şu katmandaki tüm daireleri seç", "yarıçapı 5'ten küçük olan her şeyi bul" gibi ölçütlerle seçim kümesi oluşturabiliyor. Elle yapıldığında imkânsıza yakın olan bu iş, LISP'te tek satırlık bir mesele.
Bu ikisi birleştiğinde şu tür şeyler mümkün oluyor: "çizimdeki tüm blokları gez, öznitelik değerlerini oku, proje kodunu içerenleri bul, hepsinin katmanını değiştir ve bir rapor yaz." Tek komut, birkaç saniye.
Visual LISP ne oluyor peki
Karşınıza sık çıkacak bir isim. Visual LISP, AutoLISP'in üzerine eklenmiş iki şeyin ortak adı:
- Bir geliştirme ortamı (VLIDE). Kod yazmak, satır satır çalıştırmak ve hata ayıklamak için AutoCAD'in içinde açılan bir editör.
- Genişletilmiş fonksiyonlar. Nesnelere daha modern bir şekilde erişim, dosya işlemleri, dış uygulamalarla konuşma imkânı.
Yani Visual LISP ayrı bir dil değil — AutoLISP'in daha yetenekli hâli. Bugün "LISP yazıyorum" diyen çoğu kişi aslında Visual LISP fonksiyonlarını da kullanıyor.
Not: AutoCAD'in son sürümlerinde VLIDE editörü kaldırıldı ve yerine Visual Studio Code için resmî bir AutoLISP eklentisi geldi. Kod yazma tarafında modern bir editöre geçmiş oldunuz; dilin kendisi aynı.
LISP'i severim ama her işe uygun değil. Nerede parladığını ve nerede tökezlediğini bilmek, doğru kararı vermenizi sağlar.
Parladığı yerler:
- Hız. Bir fikirden çalışan koda geçiş süresi dakikalarla ölçülür. Hiçbir alternatif bu kadar hızlı değil.
- Erişilebilirlik. Kurulum yok, lisans yok, geliştirme ortamı satın alma yok. Not Defteri ve AutoCAD yeter.
- Şeffaflık. Kod okunabilir. Altı ay sonra ne yaptığınıza bakabilirsiniz; sizden sonra gelen de bakabilir.
- Çizim ortamına yakınlık. Seçim, komut çağırma, kullanıcıdan nokta isteme — bunlar LISP'te doğal, diğer yollarda daha zahmetli.
Tökezlediği yerler:
- Hata yönetimi zayıf. Bir şey ters gittiğinde LISP kibarca haber vermez; çoğu zaman ya durur ya da yanlış devam eder.
- Test yazmak pratik olarak imkânsız. Otomatik test altyapısı yok. Bu, kod büyüdükçe ciddi bir risk.
- Büyük dosyalar bakımı zorlaştırır. Bin satırlık bir LISP dosyası, aynı boyuttaki bir C# dosyasından çok daha zor yönetilir.
- Arayüz sınırlı. Basit kutucuklar ötesinde bir kullanıcı arayüzü istiyorsanız zorlanırsınız.
- Sessiz bir kurumsal risk. LISP'i yazan kişi ayrıldığında kod çoğu firmada öksüz kalıyor. Bunu sahada defalarca gördüm.
Son madde, teknik olmayan ama en pahalıya mal olan sorun. Bir LISP kütüphanesi yıllar içinde büyür, kimse belgelemez, yazan kişi gider ve geriye kimsenin dokunmaya cesaret edemediği bir dosya yığını kalır.
En sık gelen soru bu ve cevabı teknik üstünlükte değil, sürdürülebilirlikte saklı. Ben şu soruyla başlıyorum: bu kodu kim sürdürecek ve ne kadar süre yaşayacak?
| Durum | Doğru seçim | Neden |
|---|---|---|
| Tek kişilik iş, birkaç kez çalışacak | AutoLISP | Kurulum maliyeti kazancı yemesin |
| Katman/blok/öznitelik düzenleme | AutoLISP | Zaten en verimli olduğu alan |
| Ekip kullanacak, kural içeriyor | .NET | Test ve sürüm kontrolü şart |
| Dış veri kaynağı / ERP bağlantısı | .NET | LISP bu yükü taşımıyor |
| Zengin kullanıcı arayüzü gerekiyor | .NET | LISP'in arayüz imkânları sınırlı |
| Üretime giden çıktı üretiyor | .NET + doğrulama | Sessiz hata en pahalı hatadır |
| Ne yapacağı henüz belirsiz | AutoLISP | Önce keşif, kalıcı çözüm sonra |
Son satır önemli: LISP mükemmel bir keşif dilidir. Bir fikri yarım saatte deneyip işe yarayıp yaramadığını görürsünüz. İşe yarıyorsa ve kalıcı olacaksa, o zaman .NET'e taşımayı düşünürsünüz.
Bu kararı ve yapay zekanın bu denkleme nasıl girdiğini AutoCAD otomasyonu: LISP, .NET ve yapay zeka arasında nasıl seçim yaparım yazısında daha ayrıntılı ele aldım.
LISP öğrenmenin en verimli yolu, kitap okumak değil, küçük ve gerçek bir işi çözmek. Şöyle bir sıra öneriyorum:
1. Bir sorun seçin. Günde birkaç kez yaptığınız, sıkıcı ve kurallı bir iş. "Şu katmanı oluştur ve rengi şu olsun" gibi mütevazı bir şey ideal.
2. Editörünüzü kurun. AutoCAD'in yeni sürümlerinde Visual Studio Code ve resmî AutoLISP eklentisi doğru başlangıç. Eski sürümlerde VLIDE zaten AutoCAD'in içinde.
3. Var olan kodu okuyun. İnternette on binlerce ücretsiz LISP rutini var. Birini indirin, çalıştırın, sonra açıp okuyun. LISP'in sözdizimi ilk bakışta tuhaf gelir (parantezler!) ama iki gün içinde alışırsınız.
4. Küçük değişiklikler yapın. Hazır bir rutini alıp katman adını değiştirmek, ilk sıfırdan yazma denemesinden çok daha öğreticidir.
5. Kendi komutunuzu tanımlayın. İşin en tatmin edici anı, komut satırına kendi yazdığınız kısaltmayı yazıp bir şeyin olduğunu görmek. Bunun nasıl yapıldığını AutoCAD'e AutoLISP ile yeni komut ekleme yazısında adım adım anlattım.
6. Yüklemeyi otomatikleştirin. Yazdığınız rutinlerin AutoCAD her açıldığında hazır olmasını istersiniz. Bunun yollarını AutoLISP dosyası yükleme ve otomatik başlatma yazısında topladım.
Bu soru artık her seminerde geliyor, o yüzden açıkça cevaplayayım: hayır, ama denklemi değiştirdi.
Dil modelleri LISP kodu yazma konusunda gerçekten iyi. Basit bir rutini tarif ettiğinizde çalışan bir kod üretme ihtimalleri yüksek. Bu, LISP öğrenme eşiğini ciddi biçimde düşürdü — artık sözdizimini ezberlemek zorunda değilsiniz.
Ama iki şey değişmedi:
Ne isteyeceğinizi bilmek gerekiyor. "Çizimi düzelt" diye bir istek yok. "Şu katmandaki tüm metinleri şu yazı tipine çevir" diye bir istek var. Bu tarifi yapabilmek, işin kendisini anlamayı gerektiriyor.
Üretilen kodu doğrulamak gerekiyor. LISP'in en zayıf yanı hata yönetimiydi, hatırlayın. Üretilen kod da bu zayıflığı miras alıyor: çalışır görünür, kenar durumda sessizce yanlış sonuç verir. Ve çizimde yaptığı değişiklikler geri alınamaz.
Pratik tavsiyem: kodu üretin, ama önce bir kopya çizimde deneyin. Bu tek alışkanlık, yapay zeka destekli LISP yazmanın riskinin büyük kısmını ortadan kaldırıyor.
AutoLISP nedir? AutoLISP, AutoCAD'in içinde çalışan ve kullanıcının kendi komutlarını yazmasına imkân veren bir programlama dilidir. Kod düz metin .lsp dosyasında durur, AutoCAD'e yüklendiğinde derleme gerektirmeden çalışır ve çizim veritabanına doğrudan erişebilir.
AutoLISP ne işe yarar? Katman ve çizim standardı düzenleme, toplu değişiklikler, blok özniteliklerini okuma ve doldurma, firma ürünlerine özgü çizim komutları oluşturma, sayfa düzeniyle toplu çıktı alma ve çizimden veri çıkarma gibi işlerde kullanılır. Ortak paydası, kurallı ve tekrarlayan işler olmasıdır.
AutoLISP öğrenmek zor mu? Sözdizimi ilk bakışta alışılmadıktır çünkü her şey parantezlerle yazılır, ama dil oldukça küçüktür. Var olan bir rutini indirip küçük değişiklikler yaparak başlamak, sıfırdan yazmayı denemekten çok daha hızlı ilerleme sağlar.
AutoLISP hâlâ kullanılıyor mu? Evet. 1980'lerden beri neredeyse değişmeden duruyor ve AutoCAD'in her sürümünde destekleniyor. Küçük, hızlı ve çizim ortamına yakın otomasyonlarda hâlâ en pratik yol.
AutoLISP mi .NET mi kullanmalıyım? Tek kişilik, kısa ömürlü ve çizim düzenleme ağırlıklı işlerde AutoLISP; ekip kullanacak, kural içeren, dış veri kaynağına bağlanan veya üretime çıktı üreten işlerde .NET. Karar teknik üstünlükte değil, kodu kimin sürdüreceği ve ne kadar yaşayacağı sorusunda saklıdır.
Visual LISP ile AutoLISP arasındaki fark nedir? Visual LISP ayrı bir dil değil, AutoLISP'in genişletilmiş hâlidir: nesnelere daha modern erişim, dosya işlemleri ve dış uygulamalarla iletişim ekler. Ayrıca VLIDE adlı bir geliştirme ortamı sunuyordu; yeni AutoCAD sürümlerinde onun yerini Visual Studio Code için resmî AutoLISP eklentisi aldı.
`.lsp` dosyası nasıl açılır ve çalıştırılır? .lsp düz metin dosyasıdır, herhangi bir metin editörüyle açılıp okunabilir. AutoCAD'de çalıştırmak için APPLOAD komutuyla yüklersiniz; her açılışta hazır olmasını istiyorsanız otomatik yükleme yollarından birini kullanmanız gerekir.
Yapay zeka ile AutoLISP yazdırmak güvenli mi? Basit rutinlerde oldukça iyi sonuç veriyor, ama üretilen kod LISP'in zayıf hata yönetimini miras alır: kenar durumlarda sessizce yanlış sonuç verebilir ve çizimdeki değişiklikler geri alınamaz. Üretilen her rutini önce bir kopya çizim üzerinde denemek şarttır.
AutoLISP, AutoCAD'in size verdiği en doğrudan otomasyon kapısı. Küçük, hızlı, şeffaf ve çizim ortamının içinde yaşıyor. Küçük ve kurallı işlerde hiçbir alternatif ona yetişemiyor.
Sınırı ise net: kod büyüdükçe, ekip kullanmaya başladıkça ve üretime giden çıktı ürettikçe LISP'in zayıf yanları (hata yönetimi, test edilemezlik, bakım yükü) öne çıkıyor. O eşiği geçtiğinizde .NET tarafına bakmanın vakti gelmiş demektir.
Ama o eşiğe kadar — ki çoğu ofisin işi o eşiğin altındadır — LISP hâlâ en akıllı seçim.