25.10.2009 20:50    

yazgunesi
seablemoon
Şu çap işareti veren lispin linki bozulmuş....



Linkleri görebilmek için ÜYE olmalısınız.




Ölçüye çap verme lispi : (orjinal olan)

Kod:

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;
; Omschrijving :Deze Lisp-routine voegt rondtekens (%%C)
; toe aan geselecteerde dimensions, zowel bij
; default dimensiontext ( <> ) als bij zelf
; ingegeven dimensiontext
; Auteur :Kees Neele
;
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

(defun c:rond (/ d1 lijst1 oldtxt a new)
(setq d1 (entsel))
(setq d1 (car d1))
(setq lijst1 (entget d1))
(setq oldtxt (cdr (assoc 1 lijst1)))
(if (= oldtxt "")
    (setq oldtxt "<>")
    (setq a b)
)
(setq new (strcat "%%C" oldtxt))
(command "dim1")
(command "newtext" new d1)
(PRINC)
)
(PRINC)


Ölçüye çap verme lispi : (yeni versiyon)

Komut ismi: cap

Kod:

(defun c:cap ()
 
(setq olcu_secimi (entsel"\nÖlçü çizgisine tıkla ->>"))
(setq olcu_secimi (car olcu_secimi))
(setq mylist1 (entget olcu_secimi))
(setq eskiyazi (cdr (assoc 1 mylist1))) 
(if (= eskiyazi "")
   (setq eskiyazi "<>")
  (setq a b)

(setq yeniyazi (strcat "%%C" eskiyazi)) 
(command "dim1")
(command "newtext" yeniyazi olcu_secimi)
(princ) 
)
(Princ "Lisp'i çalıştırmak için > cap < yazınız! www.autocadokulu.com ")


Ölçüye x45 derece yazdırma lispi :

Komut ismi: ph45

Kod:

;************************************
;           x 45 derece pah lispi
;
;          powered by yazgunesi                 
;         www.autocadokulu.com
;
; ***********************************

(defun c:ph45 () 
(setq olcu_secimi (entsel"\nÖlçü çizgisine tıkla ->>"))
(setq olcu_secimi (car olcu_secimi))
(setq mylist1 (entget olcu_secimi))
(setq eskiyazi (cdr (assoc 1 mylist1))) 
(if (= eskiyazi "")
   (setq eskiyazi "<>")
  (setq a b)

(setq yeniyazi (strcat eskiyazi "x45%%D" )) 
(command "dim1")
(command "newtext" yeniyazi olcu_secimi)
(princ) 
)

(Princ "Lisp'i çalıştırmak için > ph45 < yazınız! www.autocadokulu.com ")



Yukarıda gözüken autolisp programını nasıl kullanacağınızı bilmiyorsanız eğer aşağıdaki linkten;
AutoLISP > Konu Anlatımları > Lisp Dosyalarının oluşturulması ve Yüklenmesi
konusunu incelemenizi öneririm...

08.12.2009 06:51    

alirizasahin
Hergün bu siteyi takip ettiğim halde nasıl da gözden kaçırmışım bu lispleri. Emeği geçen arkadaşlara teşekkürler

09.12.2009 12:52    

ProhibiT
Merhaba arkadaşlar :)
Burada paylaşılan çap ve pah lispleriyle ilgili olarak;
- Bazı satırların gereksiz olduğu.
- AutoCAD'in DIM1 komutu kullanıldığı için komut prompt'larının ekranda göründüğü.
- if komut blokunda Else bölümünün gereksiz olduğu.
- İşlem görmüş bir ölçünün yanlışlıkla bir daha seçilmesi durumunda 2 tane çap işareti olacağı.
şeklinde bazı eleştirilerim olmuş ve bunları yazgunesi arkadaşımızla özel mesaj yoluyla paylaşmıştım.

yazgunesi eleştirilerimi olgunlukla karşıladı. Yabancı bir kaynaktan alıntı yaptığını zaten orijinalini de burada verdiğini, fazla detaya inmeden düzenlemeler yapıp burada paylaştığını söyledi.
Eleştirilerimi anlayışla karşıladığı için buradan bir kere daha teşekkür etmek isterim.

Bahsettiğim eleştiriler doğrultusunda Bu AutoLisp programlar;
Kod:

(defun c:cap ()
  (setq mylist (entget (car (entsel "\nÖlçü çizgisini tıkla ->>"))))
  (if (= (cdr (assoc 1 mylist)) "") (setq mylist (subst (cons 1 "<>") (assoc 1 mylist) mylist)))
  (if (not (wcmatch (cdr (assoc 1 mylist)) "*%%C*"))
    (progn
      (setq mylist (subst (cons 1 (strcat (cdr (assoc 1 mylist)) "%%C")) (assoc 1 mylist) mylist))
      (entmod mylist)
      (entupd (cdr (assoc -1 mylist)))
    )
    (princ "\nZaten Çap yazılmış...")
  )
  (prin1)
)

ve
Kod:

(defun c:ph45 ()
  (setq mylist (entget (car (entsel "\nÖlçü çizgisini tıkla ->>"))))
  (if (= (cdr (assoc 1 mylist)) "") (setq mylist (subst (cons 1 "<>") (assoc 1 mylist) mylist)))
  (if (not (wcmatch (cdr (assoc 1 mylist)) "*x45%%D*"))
    (progn
      (setq mylist (subst (cons 1 (strcat (cdr (assoc 1 mylist)) "x45%%D")) (assoc 1 mylist) mylist))
      (entmod mylist)
      (entupd (cdr (assoc -1 mylist)))
    )
    (princ "\nZaten Pah yazılmış...")
  )
  (prin1)
)

şeklinde yazıldıklarında daha doğru olacaktır.

Buraya kadar tamam da neden bunları buraya yazıyorum?

Bunları yazıp bitirdikten sonra aklıma bir şey geldi;
AutoCAD'de DIMPOST adlı bir sistem değişkeni var.
DIMPOST değişkeninin varsayılan değeri "" yani boş. Bu değişkenin değerini ayarlayarak, ölçü rakamına ön ek veya son ek olarak ilaveler yapabiliyoruz. AutoCAD komut satırından DIMPOST girip %%C<> değerini girersek. Bu durumda yeni vereceğimiz ölçü rakamlarının önüne çap işareti konacaktır. Ya da DIMPOST değişkenini ayarladıktan sonra mevcut bir ölçüyü güncellediğimizde (update) gene çap işareti yazılacaktır. Benzer şekilde; DIMPOST değişkenine <>x45%%D değerini atayarak pah gösterimini de halletmiş oluyoruz.

Bunu farkettiğimde çok güldüm kendi kendime. Hep birlik olmuş, İncir çekirdeğine amma eziyet etmişiz diye düşündüm.

Genede komut satırından bir sürü değer girip, dimemsion komutuyla uğraşıp,
işin bitince dimpost değerini eski haline getirmeye üşenen arkadaşlarımız;
Kod:

(defun c:cap ()
  (setq odmpst (getvar "dimpost"))
  (setvar "dimpost" "%%C<>")
  (command "dim1" "upd" (car (entsel "\Ölçü çizgisini tıkla ->>")) "")
  (setvar "dimpost" odmpst)
)

ve
Kod:

(defun c:ph45 ()
  (setq odmpst (getvar "dimpost"))
  (setvar "dimpost" "<>x45%%D")
  (command "dim1" "upd" (car (entsel "\Ölçü çizgisini tıkla ->>")) "")
  (setvar "dimpost" odmpst)
)

fonksiyonlarını kullanabilirler :)

Selamlar, Sevgiler, Herkese Kolay Gelsin...

24.03.2010 14:10    

yazgunesi
Saçilen ölçüye %%c çap işareti yazdırma lispi :
(oguzka arkaşımızın forum sayfasında yazdığı istek .. )

Komut ismi: capyeni

Kod:

;************************************
;    %%o%%c%%o kodlu çap işaretini %%c şeklinde yapma lispi
;
;          coded by yazgunesi                 
;         www.autocadokulu.com
;
; ************************************

(defun c:capyeni ()
(setq mylist (entget (car (entsel "\nÖlçü çizgisine tıkla ->>")))) 
(if (= (cdr (assoc 1 mylist)) "%%o%%c%%o<>")   
  (setq mylist (subst (cons 1 "%%o%%c%%o") (assoc 1 mylist) mylist))) 
(if (not (wcmatch (cdr (assoc 1 mylist)) "*%%o%%c%%o<>*"))  ; 1. if start
(progn
(setq mylist (subst (cons 1 (strcat "%%C<>")) (assoc 1 mylist) mylist))
(entmod mylist)
(entupd (cdr (assoc -1 mylist)))
) ; if son bitiş parantezi
) ; iptal edilen uyarı satırı için fonksiyon sonlandırma parantezi ..
; (princ "\nZaten Çap yazılmış...")) ; bu satır iptal edildi..
(prin1))
(Princ "Lisp'i çalıştırmak için > capyeni < yazınız! ")

> 1 <
Copyright © 2004-2022 SQL: 0.728 saniye - Sorgu: 50 - Ortalama: 0.01456 saniye