Mevcut Yazılara Ön Ek veya Son Ek Ekleme

Tanım

Bu komut ile mevcut yazıların soluna veya sağına yazılar eklenebilir. Komut önce sol tarafa eklenecek ön eki sonra sağ tarafa eklenecek son eki sorar ve değiştirlecek yazının seçilmesini ister. Seçilen nesnenin yazı olmaması durumda komut satırında uyarı mesajı verir.

Program

(defun c:ekle ()
  (setq sol (getstring T "\n sol tarafa ekleyenecek yazı : "))
  (terpri)
  (setq sag (getstring T "\n sag tarafa ekleyenecek yazı : "))
  (terpri)
  (while
    (setq ent (entsel "\n değiştirlecek yazıyı seçiniz: ")) ; 1
      (if (/= nil ent) ; 2
        (progn
          (setq en (car ent)) ; 3
          (setq enlist (entget en)) ; 4
          (setq tip (cdr (assoc 0 enlist))) ; 5
          (setq yazı (cdr (assoc 1 enlist))) ; 6
          (if (/= tip "TEXT") ; 7
            (princ "\n seçilen obje yazı değil") ; 8
            (progn
              (princ yazı)
              (terpri)
              (if (/= nil sol) ; 9
                (setq yazı (strcat sol yazı))
              )
              (if (/= nil sag) ; 10
                (setq yazı (strcat yazı sag))
              )
              (setq enlist (subst (cons 1 yazı) ; 11
                                           (assoc 1 enlist)
                                           enlist
                                )
              )
              (terpri)
              (entmod enlist) ; 12
              (terpri)
          )
        )
      )
    )
  )
)


Açıklamalar

1 Bu satırda entsel fonksiyonu ile bir adet nesne seçilir. Seçilen nesnenin entity name ve seçimin yapıldığı nokta bilgisi ent değişkenine atanır.
2 Bu satırdan ent değişkenin nil olması durumunda hiçbir işlem yapılmayacağı yanı ent değişkeninin bir değeri olması durumunda işlemlerin yapılacağı anlaşılmaktadır.
3 entity name ve seçimin yapıldığı nokta bilgisi içeren ent değişkeninden car fonksiyonu ile entity name bilgisi en değişkenine atanır.
4 entget fonksiyonu ile en değişkeninin nesne bilgileri enlist değişkenine atanır.
5 Liste halindeki bilgilerden assoc fonksiyonu ile 0 kodlu bilgi cdr fonksiyonu ile kod numarası silinerek tip değişkenine atanır.
6 Üst satırda olduğu gibi 1 kodlu bilgi de yazı değişkenine atanır.
7 Tip değişkeninin “TEXT” olmadığı sınanır.
8 Üst satırdaki sınama doğru ise princ fonksiyonu ile komut satırında “seçilen obje yazı değil” mesajı verilir.
9 Bu grupta sol değişkeninin değeri nil değilse strcat fonksiyonu ile birleştirme yapılır.
10 Üst gruptaki gibi sağ değişkeninin değerine göre birleştirme yapılır.
11 Bu grupta enlist değişkeni içerisindeki 1 kodlu bilgi yazı değişkeni ile yenilenir.
12 entmod fonksiyonuyla enlist değişkenindeki yeni bilgiler nesneye adapte edilir.


Örnek Lisp Dosyasını İndirin

011-ekle.lsp