Lisp Komutunu Yükleyip Çalıştırma
Lisp dosyasını CADian’a yüklemek ile komutu çalıştırmak iki ayrı adımdır. Kurulum için Lisp Kurulum Rehberini inceleyin. Bu sayfa yüklü bir Lisp’i nasıl kullanacağınızı anlatır.
Yüklü bir Lisp komutunu nasıl çalıştırırım?
Lisp dosyası yüklendiğinde içindeki fonksiyonlar CADian komut satırından çağrılabilir hale gelir. Çalıştırmak için komut satırına fonksiyon adını yazıp Enter’a basın — tıpkı LINE veya TRIM gibi.
401 paketindeki komutları doğrudan yazın: SDIM ← Akıllı ölçülendirme WW ← Akıllı TRIM CLM ← Merkez çizgisi TAG ← Parça numarası MI2 ← Çift yönlü mirror
(sdim) şeklindedir ama komut satırında parantez olmadan direkt SDIM yazın. Parantezle yazarsanız CADian bunu Lisp ifadesi olarak değerlendirir.Lisp komutuna klavye kısayolu nasıl atarım?
İki yöntem var:
Yöntem 1 — acad.pgp dosyası (önerilen)
Araçlar → Özelleştir → Edit Program Parameters. Açılan dosyaya satır ekleyin:
Format: KISAYOL, *KOMUT SD, *SDIM ← SD tuşu → SDIM komutunu çalıştırır CL, *CLM ← CL → Merkez çizgisi TG, *TAG ← TG → Parça numarası
Kaydet → komut satırında REINIT → PGP File seçin → OK. Kısayol hemen aktif olur.
Yöntem 2 — CUI editörü
CUI komutu → Keyboard Shortcuts → New Shortcut → komut adını girin, tuş kombinasyonunu atayın.
Lisp komutunu çalıştırırken kullanıcıdan bilgi nasıl alınır?
Lisp rutini çalışırken komut satırında istemler görüntüler. Rutine göre:
- Nokta seçimi: Ekranda tıklayın veya koordinat yazın
- Nesne seçimi: Nesnelere tıklayın, Enter ile seçimi bitirin
- Sayı/metin girişi: Komut satırına yazın, Enter ile onaylayın
- Seçenekler: Köşeli parantez içindeki harfe basın — örneğin
[Yes/No]içinYveyaN - İptal: Her zaman ESC ile rutinden çıkabilirsiniz
Otomatik Yükleme — acad.lsp ve acaddoc.lsp
CADian başladığında ve her çizim açıldığında otomatik olarak belirli Lisp dosyalarını arar ve yükler. Bu mekanizmayı anlamak, rutinlerinizi doğru yapılandırmanızı sağlar.
acad.lsp ile acaddoc.lsp arasındaki fark nedir?
Her iki dosya da CADian’ın Support klasöründe olmalıdır:
C:\CADian\CADian 2026\Support\.lsp dosyaları oluşturup acad.lsp veya acaddoc.lsp içinden (load "rutinlerim.lsp") ile yükleyin. Böylece kod yönetimi çok daha düzenli olur.Startup Suite ile otomatik yükleme nasıl yapılır?
Startup Suite grafik arayüzden yönetilen otomatik yükleme listesidir:
.lsp dosyasını seçin → Close → Close.Lisp içinden başka bir Lisp dosyasını nasıl yüklerim?
load fonksiyonu kullanılır. Dosya yolu tam veya göreli olarak verilebilir:
; Tam yol ile: (load "C:/CADian/CADian 2026/Support/rutinlerim.lsp") ; CADian Support klasöründeyse dosya adı yeterli: (load "rutinlerim.lsp") ; Yükleme hatası olursa nil dönsün (program devam etsin): (load "rutinlerim.lsp" nil)
\) değil, düz eğik çizgi (/) kullanın. Windows’ta her ikisi de çalışır ama \ kaçış karakteri olarak yorumlanabilir.Sık Karşılaşılan Hata Mesajları
Lisp hata mesajları kısa ama bilgi yoğundur. Hangi mesajın ne anlama geldiğini bilmek sorunu dakikalar içinde çözmenizi sağlar.
“no function definition” hatası
Ne anlama gelir: CADian bu isimde bir fonksiyon tanımı bulamıyor. Ya Lisp dosyası yüklenmemiş ya da fonksiyon adı yanlış yazılmış.
Çözüm adımları:
- APPLOAD ile dosyanın yüklü olduğunu doğrulayın
- Dosyanın
.lspuzantılı olduğunu kontrol edin (.lsp.txtgibi çift uzantı olmamalı) - Lisp dosyasını metin editörüyle açın,
(defun c:SDIMsatırının tam ve doğru olduğunu kontrol edin - Dosya yüklenirken sözdizimi hatası oluşmuşsa fonksiyon tanımlanmaz — yükleme sırasında hata mesajı var mı bakın
“bad argument type” hatası
Ne anlama gelir: Fonksiyon sayı beklerken nil (boş) değer aldı. Genellikle kullanıcının ESC ile girişi iptal etmesi veya geçersiz bir nesne seçmesiyle oluşur.
Kullanıcı açısından: Rutin bir nesne veya koordinat bekliyorken siz başka bir şey yaptınız ya da iptal ettiniz. Komutu tekrar çalıştırın ve rutinin istediği adımları sırasıyla takip edin.
Geliştirici açısından: Giriş fonksiyonlarının dönüş değerini if ile kontrol edin:
(setq pt (getpoint "\nBir nokta seçin: ")) (if (null pt) (progn (princ "\nİptal edildi.") (exit)) ; pt geçerliyse devam et )
“malformed list” veya “malformed string” hatası
Ne anlama gelir: Lisp sözdiziminde parantez dengesi bozuk. Her açılan parantezin kapatılması gerekir.
Çözüm: VLISP editöründe dosyayı açın (bkz. VLISP bölümü). Editör eşleşmeyen parantezleri otomatik vurgular. Alternatif olarak iyi bir metin editörü (VS Code, Notepad++) kullanın — bunlar da parantez dengesini gösterir.
; Yanlış — parantez eksik: (defun c:test () (setq x 5 (princ x) ) ← defun'u kapatıyor ama setq kapanmamış ; Doğru: (defun c:test () (setq x 5) ← setq kapatıldı (princ x) )
“quit / exit abort” hatası
Ne anlama gelir: Rutin içinde (exit) veya (quit) çağrıldı ya da kullanıcı ESC ile çıktı. Genellikle kasıtlı — hata değil.
Eğer kasıtsız çıkıyorsa rutinin hangi noktada (exit) çağırdığını VLISP editöründe izleyin.
DCL diyalog kutusu açılmıyor
Ne anlama gelir: .dcl dosyası bulunamıyor veya dialog id yanlış.
Kontrol edilecekler:
.dcldosyasının.lspdosyasıyla aynı klasörde veya Support klasöründe olduğundan emin olun- Lisp içindeki
(load_dialog "dosya.dcl")satırındaki dosya adının doğru olduğunu kontrol edin (new_dialog "dialog_adi" dcl_id)satırındaki dialog adının.dcldosyasındaki tanımla eşleştiğini doğrulayın
VLISP Editörü ile Hata Ayıklama
CADian’ın VLISP (Visual LISP) editörü Lisp kodu yazmak, test etmek ve hata ayıklamak için güçlü bir ortamdır. Sözdizimi renklendirme, parantez denetimi ve adım adım çalıştırma desteği sunar.
VLISP editörünü nasıl açarım?
İki yol:
- Komut satırına VLISP veya VLIDE yazın
- Araçlar → AutoLISP → Visual LISP Editor
VLISP editörü ayrı bir pencere olarak açılır. Mevcut .lsp dosyalarını açabilir veya yeni dosya oluşturabilirsiniz.
VLISP Console’da ifade nasıl test edilir?
VLISP penceresinin alt kısmındaki Console bölmesine Lisp ifadesi yazın ve Enter’a basın. Sonuç hemen görünür:
_$ (+ 3 5) 8 _$ (getvar "CLAYER") "0" ← aktif katmanın adını döndürür _$ (command "ZOOM" "E") ← CADian'da Zoom Extents çalıştırır _$ (setq lst (entsel "\nBir nesne seçin: ")) ← bir nesne seçmenizi bekler, entity listesi döner
Lisp dosyamı VLISP’te nasıl adım adım çalıştırırım (debug)?
Kendi Lisp Rutininizi Yazın
Kendi iş akışınızı otomatize etmek için Lisp yazmayı öğrenmek düşündüğünüzden kolay. Temel yapıyı anlarsanız basit rutinleri birkaç satırda yazabilirsiniz.
Temel Lisp rutini nasıl yazılır?
CADian komut satırından çağrılabilen bir rutin yazmak için defun c: yapısını kullanın — c: ön eki komut satırından çağrılabilir anlamına gelir:
; Kullanıcıdan iki nokta alıp aralarına çizgi çizen rutin (defun c:CIZGI2 ( / p1 p2 ) ← "/" sonrası yerel değişkenler (setq p1 (getpoint "\nBaşlangıç noktası: ")) (if (null p1) (exit)) ← ESC kontrolü (setq p2 (getpoint p1 "\nBitiş noktası: ")) (if (null p2) (exit)) (command "LINE" p1 p2 "") ← LINE komutunu çalıştır (princ) ← temiz çıkış )
Bu dosyayı cizgi2.lsp olarak kaydedin, APPLOAD ile yükleyin ve komut satırına CIZGI2 yazarak çalıştırın.
Sık kullanılan Lisp fonksiyonları nelerdir?
Kullanıcıdan giriş alma
(getpoint "\nNokta: ") ← nokta seçimi → (x y z) listesi (getdist "\nMesafe: ") ← mesafe → sayı (getangle "\nAçı: ") ← açı → radyan (getstring "\nMetin: ") ← metin → string (getint "\nSayı: ") ← tam sayı (getreal "\nDeğer: ") ← ondalık sayı (entsel "\nNesne: ") ← nesne seçimi → (entity nokta) (ssget "\nNesneler: ") ← çoklu seçim → selection set
Sistem değişkeni okuma/yazma
(getvar "CLAYER") ← değer oku (setvar "CLAYER" "Duvar") ← değer yaz (getvar "DIMSCALE") ← ölçü ölçeğini oku
Nesne özellikleri
(entget ent) ← nesnenin özellik listesini al (entmod lst) ← nesneyi güncelle (entmake lst) ← yeni nesne oluştur (entdel ent) ← nesneyi sil (ssname ss 0) ← selection set'ten ilk nesneyi al (sslength ss) ← seçimdeki nesne sayısı
Pratik örnek: Seçili nesneleri belirli bir katmana taşıyan rutin
(defun c:KTASI ( / ss katman i ent edata ) ; Hedef katman adını kullanıcıdan al (setq katman (getstring "\nHedef katman adı: ")) (if (or (null katman) (= katman "")) (exit)) ; Nesneleri seç (setq ss (ssget "\nTaşınacak nesneleri seçin: ")) (if (null ss) (exit)) ; Her nesnenin katmanını değiştir (setq i 0) (repeat (sslength ss) (setq ent (ssname ss i) edata (entget ent) edata (subst (cons 8 katman) (assoc 8 edata) edata)) (entmod edata) (setq i (1+ i)) ) (princ (strcat "\n" (itoa i) " nesne taşındı.")) (princ) )
(assoc 8 edata) ifadesinde 8, DXF kodlarında katman adını temsil eder. 1 = metin içeriği, 10 = başlangıç noktası, 62 = renk. Bu kodları bilmek entity düzenlemenin temelidir.401 Komut Paketinden En Çok Kullanılanlar
Paketi henüz kurmadıysanız → Lisp Kurulum Rehberi
Tüm komut listesi → cadian.com.tr/cadian-lispleri/
📏 Ölçülendirme
✂️ Düzenleme
🪞 Simetri ve Kopyalama
⊕ Merkez Çizgisi ve İşaretleme
📐 Çizim Yardımcıları
Lisp Hakkında Sık Sorulan Sorular
Lisp dosyasını her oturumda tekrar yüklemek zorunda mıyım?
Hayır. Startup Suite’e eklediğiniz dosyalar her oturumda otomatik yüklenir. 401 komut paketi kurulum sırasında zaten Startup Suite’e eklenir — elle yüklemenize gerek yoktur.
CADian güncellenince Lisp rutinlerim etkilenir mi?
Standart Lisp rutinleri güncelleme sonrası da çalışmaya devam eder. Ancak Startup Suite listesi ve bazı profil ayarları sıfırlanabilir. Güncelleme sonrası şunu kontrol edin: APPLOAD → Startup Suite — dosyalarınızın listede hâlâ olup olmadığına bakın. Yoksa yeniden ekleyin.
Lisp ile büyük veri işlemek çizimi yavaşlatır mı?
Lisp yorumlanan bir dildir — çok sayıda nesneyi döngüyle işleyen rutinler binlerce nesnede yavaşlayabilir. Pratik öneriler:
- Çizimi yenilemekten (
command "REGEN") kaçının — rutin bitmeden çağırmayın - Döngü içinde
redrawçağrılarını minimumda tutun - Çok büyük selection set’lerle çalışıyorsanız
REGENMODE 0yapın, işlem bitince geri alın - 1000+ nesne üzerinde rutin çalıştırılacaksa süre normaldir — kullanıcıya
(princ "\nİşleniyor...")ile bilgi verin
AutoCAD’de yazdığım Lisp rutinleri CADian’da çalışır mı?
Standart AutoLISP fonksiyonları kullanan rutinlerin büyük çoğunluğu doğrudan çalışır. Dikkat edilecekler:
- ActiveX / COM çağrıları (vla- ile başlayanlar) kısmi desteklidir — bazı fonksiyonlar çalışmayabilir
- ARX uygulamalarına bağımlı fonksiyonlar çalışmaz
- Menü ve araç çubuğu manipülasyonu yapan rutinler arayüz farkı nedeniyle uyarlanması gerekebilir
Geçiş sırasında VLISP Console’da test etmenizi öneririz.