04.04.2008 06:55    

sinanc
daha önce ki başlaığa cevap olarak yazacaktım ama forumun kodları buna izin vermiyor (üst üste aynı başlığa cevap yazdırmıyor... Yöneticiler uygun görmezse mesajı o başlığa kaydrabilirler.

tunç26 arkadaşımızın koordinat listeleme ile ilgili bir isteği olmuştu, bana gönderdiği çizime göre bir lisp hazırladım.
Mevcut olan çizimde nokta ismi ile nokta arasında bir bağ yok, yani nokta ve nokta yazısı aynı blok içinde attribut olsaydı işimiz daha kolay olacaktı ! Yazı insert noktası ve "Nokta" objesinin insert noktası ayrı olunca işler biraz karışıyor.
O yüzden sadece mevcut noktanın X koordinatını baz olarak bir sıralama yaptırdım, istenirse nokta üzerine tekrar numaralama yapılabilir !

Kod:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Nokta Koordinatlarını Listeleme Programı - NKT_KOOR.lsp
; www.autocadokulu.com (c) 2008 - Sinan COŞKUN
; "NOKTA" katmanında olan nokta objelerini X koordinatına göre sıralayıp listeler !
(defun c:koor()
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(setq nkt_lst(list))
(setq nths 0)
(setq bslk " ")
(prompt "\nKoordinat noktalarını seçiniz ! :")
(setq nkt_sec(ssget(list(cons 0 "POINT")(cons 8 "NOKTA"))))
(if(= nkt_sec nil)
  (alert "\nSeçilen Obje(ler) arasında Nokta yok !")
  (progn
   (setq nkt_say (sslength nkt_sec))
   (setq says 0)
   (while(> nkt_say says)
    (setq nkt_oku(cdr(assoc 10(entget(ssname nkt_sec says)))))
    (setq nkt_x(rtos(car nkt_oku)))
    (setq nkt_y(rtos(cadr nkt_oku)))
    (setq nkt_z(rtos(caddr nkt_oku)))
    (setq nkt_lst(append nkt_lst(list(strcat nkt_x"X"nkt_y"Y"nkt_z"Z"))))
    (setq says(+ says 1))
   );while sonu
   
   (setq ynkt_lst(vl-sort nkt_lst '<))

   (setq yzy(getreal(strcat"\nYazı yükseklği ? <"(rtos(getvar "textsize")2 2)">:")))
   (if(= yzy nil)(setq yzy(getvar "textsize")))
   
   (setq kbs(getint"\nKoordinat başlangıç Sayısı ? <1> :"))
   (if(= kbs nil)(setq kbs 1))

   (setq yzn(getpoint"\nTablo başlangıç Noktası ? :"))
   
   (repeat(length ynkt_lst)
    (setq nkt_al(nth nths ynkt_lst))
    (setq x_yer(vl-string-search "X" nkt_al))
    (setq y_yer(vl-string-search "Y" nkt_al))
    (setq z_yer(vl-string-search "Z" nkt_al))
    (setq x_al(rtos(atof(substr nkt_al 1))))
    (setq y_al(rtos(atof(substr nkt_al(+ x_yer 2)))))
    (setq z_al(rtos(atof(substr nkt_al (+ y_yer 2)))))

    (command "text" yzn yzy "" (strcat(itoa kbs) "-" bslk x_al bslk y_al bslk z_al))
    (setq yzn(polar yzn 4.71238898 (* yzy 1.75)))
    (setq nths(+ nths 1))
    (setq kbs(+ kbs 1))
   );repeat sonu
); progn sonu
);if sonu
(setvar "osmode" 1)
(princ)
)


* autocad 2007 de test edilmiştir !

sinanc (04.04.2008 08:22 GMT)

04.04.2008 08:06    

ehya
Güzel bi lisp eline sağlık.
Ancak osnap açıkken yazılar üst üste yazıyor. İşlem esnasında bunları kapattırırsan hata oluşmaz.

04.04.2008 08:24    

sinanc
Alıntı
ehya :
Güzel bi lisp eline sağlık.
Ancak osnap açıkken yazılar üst üste yazıyor. İşlem esnasında bunları kapattırırsan hata oluşmaz.



haklısın, ben genelde osnapları kapatırım, transparan olarak elle tek kullanımlık yaparım..
"osmode" ilavesi yaptım 1.nci mesaja...

04.04.2008 09:35    

tunç26
tşk güzel olmuş eline sağlık nokta numaralarıda nokdanın yanına yazdırabilirsen çok güzel olcak yardımların için için tşk

04.04.2008 11:01    

sinanc
Noktalara Numara atan versiyonu.
- yazı yüksekliğni, layer'ini, stilini vs... kendi isteğinize göre ayarlayınız..

Kod:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Nokta Koordinatlarını Listeleme Programı - NKT_KOOR.lsp
; www.autocadokulu.com (c) 2008 - Sinan COŞKUN
; "NOKTA" katmanında olan nokta objelerini X koordinatına göre sıralayıp listeler !
; + Noktaları numaralandırır !

(defun c:koor()
(setvar "cmdecho" 0)
(setq eski_os(getvar "osmode"))
(setvar "osmode" 0)
(command "undo" "group")
(setq nkt_lst(list))
(setq nths 0)
(setq bslk " ")
(prompt "\nKoordinat noktalarını seçiniz ! :")
(setq nkt_sec(ssget(list(cons 0 "POINT")(cons 8 "NOKTA"))))
(if(= nkt_sec nil)
  (alert "\nSeçilen Obje(ler) arasında Nokta yok !")
  (progn
   (setq nkt_say (sslength nkt_sec))
   (setq says 0)
   (while(> nkt_say says)
    (setq nkt_oku(cdr(assoc 10(entget(ssname nkt_sec says)))))
    (setq nkt_x(rtos(car nkt_oku)))
    (setq nkt_y(rtos(cadr nkt_oku)))
    (setq nkt_z(rtos(caddr nkt_oku)))
    (setq nkt_lst(append nkt_lst(list(strcat nkt_x"X"nkt_y"Y"nkt_z"Z"))))
    (setq says(+ says 1))
   );while sonu
   
   (setq ynkt_lst(vl-sort nkt_lst '<))

   (setq yzy(getreal(strcat"\nYazı yükseklği ? <"(rtos(getvar "textsize")2 2)">:")))
   (if(= yzy nil)(setq yzy(getvar "textsize")))
   
   (setq kbs(getint"\nKoordinat başlangıç Sayısı ? <1> :"))
   (if(= kbs nil)(setq kbs 1))

   (setq yzn(getpoint"\nTablo başlangıç Noktası ? :"))
   
   (repeat(length ynkt_lst)
    (setq nkt_al(nth nths ynkt_lst))
    (setq x_yer(vl-string-search "X" nkt_al))
    (setq y_yer(vl-string-search "Y" nkt_al))
    (setq z_yer(vl-string-search "Z" nkt_al))
    (setq x_nkt(atof(substr nkt_al 1 x_yer)))
    (setq y_nkt(atof(substr nkt_al(+ x_yer 2)(- y_yer x_yer 1))))
    (setq z_nkt(atof(substr nkt_al(+ y_yer 2)(- z_yer y_yer 1))))

    (setq kyzn(list x_nkt y_nkt z_nkt))
     
    (setq x_al(rtos x_nkt))
    (setq y_al(rtos y_nkt))
    (setq z_al(rtos z_nkt))

    (command "text" kyzn yzy "" (itoa kbs))
    (command "text" yzn yzy "" (strcat(itoa kbs) "-" bslk x_al bslk y_al bslk z_al))
    (setq yzn(polar yzn 4.71238898 (* yzy 1.75)))
    (setq nths(+ nths 1))
    (setq kbs(+ kbs 1))
   );repeat sonu
); progn sonu
);if sonu
(setvar "osmode" eski_os)
(command "undo" "e")
(princ)
)

sinanc (04.04.2008 11:14 GMT)

04.04.2008 14:16    

tunç26
tşk güzel olmuş yardımların içi tşk

10.04.2008 08:31    

ardacan_26
tşk güzel olmuş bi isdegim olcak n.no, y,x, bi tablo şeklinde yaptırılabilirmi bide z degerini yazmasın sadece n.no y x yazsın tablo şeklinde tşk

10.04.2008 11:52    

sinanc
Kod:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Nokta Koordinatlarını Listeleme Programı - NKT_KOOR.lsp
; www.autocadokulu.com (c) 2008 - Sinan COŞKUN
; "NOKTA" katmanında olan nokta objelerini X koordinatına göre sıralayıp listeler !
;
(defun tablo_ciz()
(setq dik_czg_uz (* kbs(* yzy 1.75)))
(setq 0dik_czg1(polar tbn 3.14159265(* yzy 2.5)))
(setq 0dik_czg2(polar 0dik_czg1 4.71238898 dik_czg_uz))
(setq 1dik_czg2(polar tbn 4.71238898 dik_czg_uz))
(setq 2dik_czg1(polar tbn 0 (* yzy 12.5)))
(setq 2dik_czg2(polar 2dik_czg1 4.71238898 dik_czg_uz))
(setq 3dik_czg1(polar tbn 0 (* yzy 25)))
(setq 3dik_czg2(polar 3dik_czg1 4.71238898 dik_czg_uz))

(command "line" 0dik_czg1 0dik_czg2 "")
(command "line" tbn 1dik_czg2 "")
(command "line" 2dik_czg1 2dik_czg2 "")
(command "line" 3dik_czg1 3dik_czg2 "")
(command "line" 0dik_czg1 0dik_czg2 "")
)

;;;;;;;;;;;;;;;
(defun c:koor()
(setvar "cmdecho" 0)
(setq eski_os(getvar "osmode"))
(setvar "osmode" 0)
(command "undo" "group")
(setq nkt_lst(list))
(setq nths 0)
(setq bslk " ")
(prompt "\nKoordinat noktalarını seçiniz ! :")
(setq nkt_sec(ssget(list(cons 0 "POINT")(cons 8 "NOKTA"))))
(if(= nkt_sec nil)
  (alert "\nSeçilen Obje(ler) arasında Nokta yok !")
  (progn
   (setq nkt_say (sslength nkt_sec))
   (setq says 0)
   (while(> nkt_say says)
    (setq nkt_oku(cdr(assoc 10(entget(ssname nkt_sec says)))))
    (setq nkt_x(rtos(car nkt_oku)))
    (setq nkt_y(rtos(cadr nkt_oku)))
    (setq nkt_z(rtos(caddr nkt_oku)))
    (setq nkt_lst(append nkt_lst(list(strcat nkt_x"X"nkt_y"Y"nkt_z"Z"))))
    (setq says(+ says 1))
   );while sonu
   
   (setq ynkt_lst(vl-sort nkt_lst '<))

   (setq yzy(getreal(strcat"\nYazı yükseklği ? <"(rtos(getvar "textsize")2 2)">:")))
   (if(= yzy nil)(setq yzy(getvar "textsize")))
   
   (setq kbs(getint"\nKoordinat başlangıç Sayısı ? <1> :"))
   (if(= kbs nil)(setq kbs 1))

   (setq tbn(getpoint"\nTablo başlangıç Noktası ? :"))
   (setq n_yzn tbn)
   (command "line"(polar n_yzn 3.14159265(* yzy 2.5))(polar n_yzn 0(* yzy 25))"")
   
   (repeat(length ynkt_lst)
    (setq nkt_al(nth nths ynkt_lst))
    (setq x_yer(vl-string-search "X" nkt_al))
    (setq y_yer(vl-string-search "Y" nkt_al))
    (setq z_yer(vl-string-search "Z" nkt_al))
    (setq x_nkt(atof(substr nkt_al 1 x_yer)))
    (setq y_nkt(atof(substr nkt_al(+ x_yer 2)(- y_yer x_yer 1))))
    (setq z_nkt(atof(substr nkt_al(+ y_yer 2)(- z_yer y_yer 1))))

    (setq kyzn(list x_nkt y_nkt z_nkt))
     
    (setq x_al(rtos x_nkt))
    (setq y_al(rtos y_nkt))
    (setq z_al(rtos z_nkt))
     
    (setq n_yzn(polar n_yzn 4.71238898(* yzy 1.75)))
    (setq X_yzn(polar n_yzn 0(* yzy 12.5)))
    (setq Y_yzn(polar n_yzn 0(* yzy 25)))
    (command "text" kyzn yzy "" (itoa kbs)); nokta üzerinde ki numaralar
    (command "text" "J" "R" n_yzn yzy "" (strcat(itoa kbs)))
    (command "text" "J" "R" X_yzn yzy "" x_al)
    (command "text" "J" "R" Y_yzn yzy "" y_al)
    (command "line"(polar n_yzn 3.14159265(* yzy 2.5))Y_yzn "")
    (setq nths(+ nths 1))
    (setq kbs(+ kbs 1))
   );repeat sonu
(tablo_ciz)
); progn sonu
);if sonu

(setvar "osmode" eski_os)
(command "undo" "e")
(princ)
)

ehya (17.04.2008 07:32 GMT)

17.04.2008 07:19    

mersoy58
bu lisp hangi noktaları listeliyor acaba arkadaşlar. Ben bir türlü nokta/point seçtiremedim...

17.04.2008 07:33    

ehya
Point olması yanında bu noktaların layer ismi "NOKTA" olmalı. Yoksa seçim yapmaz...

17.01.2009 12:23    

demhat
ehya abi daha yeniyim lispi kaydettim çalşıyor ama ben işlemi nasıl yapacağımı bilmiyorum .bana sırasıyla nasıl yuapacağımı söylersen çok sevinirim.şimdiden tşkler

17.05.2009 17:08    

atillaözel6666
ben bu lispi nasıl gireceğim.bu lisp koordinatları liste halinde tabloyamı yazıyor...

20.06.2009 13:32    

aozanp
ya su lısplerı yukledıkde kullanımını nasıl yapıyoruz detaylı bı sekılde acıklayabılcek kımse yokmu acaba ya ..

27.06.2009 13:42    

sinanc
(defun c:koor()

lisp kodlarını içinde ki "(defun c:" ve "()" arasında !

yani komut "koor"

bu lisple ilgili yeni düzenlemeler yapıyorum, topograf bir arkadaşım için , bitince buradan paylaşırm.

11.07.2009 12:13    

hozbelen
çizim içinde oluşturduğumuz layerlarda girilen nesnelerin sıralamasını yapabilirmiyiz? sıralamasını değiştirebilirmiyiz?

26.01.2010 10:04    

burakturkes
ben bu word pad kullanarak yapılan dosyalarda error: bad character read (octal): 0 mesajını alıyorum sürekli. bendeki sorun nedir acaba

ehya (26.01.2010 11:20 GMT)

26.01.2010 11:21    

ehya
Lisp, wordpad'de hazırlanan koordinatları okuyamaz. Notepad'de hazırlamalısınız.

> 1 <
Copyright © 2004-2022 SQL: 1.347 saniye - Sorgu: 90 - Ortalama: 0.01497 saniye