İçeriğe geç
CADian Lisp Kullanımı, Hata Ayıklama ve Kendi Rutininizi Yazma | CADian Türkiye
Destek Merkezi — Teknik Rehber

CADian’da
Lisp Kullanımı

Yüklü Lisp komutlarını çalıştırma, sık hata mesajları ve çözümleri, otomatik yükleme, VLISP editörü ile hata ayıklama ve kendi rutininizi yazma.

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.

Komut satırı — örnekler
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
ℹ️
Parantez gerekmez. Lisp editöründe fonksiyon çağrısı (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:

acad.pgp — kısayol tanımı
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.

💡
PGP yöntemi daha hızlı ve taşınabilirdir — acad.pgp dosyasını yeni kuruluma kopyalamak yeterlidir. CUI özelleştirmeleri için ek export/import gerekir.
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çin Y veya N
  • İ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?
DosyaNe zaman çalışır?Ne için kullanılır?
acad.lspCADian başlangıcında bir kezGlobal değişkenler, oturum boyunca gerekli fonksiyonlar
acaddoc.lspHer yeni çizim açıldığındaHer çizimde aktif olmasını istediğiniz rutinler

Her iki dosya da CADian’ın Support klasöründe olmalıdır:

C:\CADian\CADian 2026\Support\
💡
Kendi rutinlerinizi doğrudan bu dosyalara yazmak yerine ayrı .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:

1
APPLOAD komutunu çalıştırın.
2
Pencerenin altında “Startup Suite” bölümünü görürsünüz → “Contents” butonuna tıklayın.
3
“Add” ile otomatik yüklenecek .lsp dosyasını seçin → Close → Close.
4
CADian her başladığında bu dosyalar otomatik yüklenir.
⚠️
Startup Suite’e çok sayıda büyük Lisp dosyası eklemek CADian’ın açılışını yavaşlatabilir. Yalnızca her oturumda gerçekten ihtiyaç duyduklarınızı ekleyin.
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:

Lisp içinden yükleme
; 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)
ℹ️
Lisp dosya yollarında ters eğik çizgi (\) 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ı
error: no function definition: SDIM

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 .lsp uzantılı olduğunu kontrol edin (.lsp.txt gibi çift uzantı olmamalı)
  • Lisp dosyasını metin editörüyle açın, (defun c:SDIM satı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ı
error: bad argument type: numberp nil

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:

Güvenli giriş kontrolü
(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ı
error: malformed list on input

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.

Sık yapılan hata
; 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ı
error: quit / exit abort

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
error: cannot load dialog: dialog_id

Ne anlama gelir: .dcl dosyası bulunamıyor veya dialog id yanlış.

Kontrol edilecekler:

  • .dcl dosyasının .lsp dosyası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 .dcl dosyası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 bölmesinde direkt Lisp ifadesi yazıp sonucu anında görebilirsiniz. Küçük test parçaları için ideal — her seferinde dosya açmaya gerek yok.
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:

VLISP Console — test örnekleri
_$ (+ 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)?
1
VLISP’te dosyanızı açın (File → Open).
2
Durdurmak istediğiniz satıra tıklayın → Debug → Toggle Breakpoint (veya F9). Satır kırmızı işaretlenir.
3
Dosyayı yükleyin: Tools → Load Text in Editor (veya Ctrl+Alt+E).
4
CADian komut satırından rutini çalıştırın. Breakpoint’e ulaşınca VLISP kontrolü devralır.
5
Debug araç çubuğunu kullanın: Step Into (F8) ile satır satır ilerleyin, Step Over ile fonksiyon çağrısını atlayın.
6
Watch penceresine değişken adı ekleyerek değerini canlı izleyin.

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:

Temel rutin yapısı
; 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

Giriş fonksiyonları
(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

Sistem değişkenleri
(getvar "CLAYER")           ← değer oku
(setvar "CLAYER" "Duvar")   ← değer yaz
(getvar "DIMSCALE")         ← ölçü ölçeğini oku

Nesne özellikleri

Entity işlemleri
(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
katman-tasi.lsp
(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

SDIM
Akıllı ölçülendirme — boyut, tolerans ve gongcha tek hamlede
STOL
Tolerans işaretleme — üst/alt tolerans değerleri otomatik
GONG
Gongcha (yüzey pürüzlülüğü) sembolü ekleme
DIMCH
Seçili ölçülerin değerini toplu değiştirme

✂️ Düzenleme

WW
Akıllı TRIM — tüm kesişen nesneleri otomatik kırpar
OFC
Sürekli OFFSET — aynı mesafeyle tekrarlı öteleme
OFD
Her seferinde mesafe sorar — değişken aralıklı öteleme
M2
İki nokta belirterek hızlı taşıma

🪞 Simetri ve Kopyalama

MI2
İki yönde mirror — X ve Y ekseninde aynı anda
DMIR
Dinamik mirror — referans çizgisini görerek simetri
CP2
İki nokta referansıyla hassas kopyalama
ARR
Hızlı dairesel dizi — merkez ve sayı ile

⊕ Merkez Çizgisi ve İşaretleme

CLM
Merkez çizgisi — daire veya yay için otomatik
CL2
İki nokta arasına merkez çizgisi
TAG
Parça numarası (balon) ekleme — numara otomatik artar
WELD
Kaynak sembolü ekleme

📐 Çizim Yardımcıları

HTB
Tek tıkla tarama (hatch) — sınır algılama otomatik
BRK
İki nokta arasını kırma (break) — hassas aralık
EXL
Çizgileri kesişim noktasına kadar uzatma
TXT2
Metin kopyalama ve çoğaltma — format korunarak
💡
Tüm 401 komutu kategorilere göre görmek için cadian.com.tr/cadian-lispleri/ sayfasını ziyaret edin. Komutları sık kullandıklarınıza göre pgp kısayolu atamak verimliliği belirgin artırır.

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 0 yapı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.

Lisp sorununu çözemediyseniz

Hata mesajını ve Lisp dosyanızı paylaşın, teknik ekibimiz yardımcı olur.