24.12.2005 09:56    

hceven99
Merhaba, Aşağıda Kot ve Polyline uzunluğu yazan lispin kodunu yazıyorum. Umarım yazacağım kodlar arkadaşların işine yarar.
Kot lispi komutu: kot
Polyline lispi komutu: plu

Komutlardan önce yazı stili ve yüksekliğini ayarlamalısınız. Çünkü aktif stil ve yükseklikde yazılar yazılacaktır. Kot lispinde komut bitiriminde hata verebilir. Önemli değil, şu an işinizi görsün diye yazıyorum. Düzelttiğimde yeni kodu yazarım.

Yorum yapabilirsiniz. Şöyle olsa... , şu da olsa .... gibi.

(not: Arkadaşlardan bir isteğim olacak, herhangi bir konuda yardım istendiği zaman mümkün olduğu kadar sade ve açıklayıcı yazmaya çalışsınlar. Ayrıca kullandıkları Autocad versiyonlarını yazsınlar.)
Herkese kolay gelsin.

Kot yazımı:

(defun c:kot (/ gec_stil gec_yuk bilgi nokta nokta_k baz_nok kot_nok kot)
(prompt "
12/2005 © Ver 1.0 Kot yazımı.")

(setvar "CMDECHO" 0)
(setq gec_stil (getvar "TEXTSTYLE"))
(setq gec_yuk ( getvar "TEXTSIZE"))

(setq bilgi (strcat "
Aktif yazı stili <" gec_stil "> / yüksekliği <" (rtos gec_yuk) "> dir."))
(princ bilgi)

(while (= nokta nil)
(setq nokta (getpoint "
0,00 noktasını seçiniz: "))
(if (= nokta nil) (princ "Bir nokta seçmelisiniz..."))
)

(command "text" nokta "" "" "±0,00")

(setq baz_nok (cadr nokta))
(setq nokta_k 0)

(while (/= nokta_k nil)
(setq nokta_k (getpoint "
Kotu yazılacak noktayı giriniz: "))
(setq kot_nok (cadr nokta_k))
(setq kot (- kot_nok baz_nok))
(setq yazi (rtos kot))
(command "text" nokta_k "" "" yazi)

)
(princ)
)

*****************************

Polyline yazımı:

(defun c:plu(/ akyuk akstla1b ayar oz p-uzunluk baz-nok y_d)
(prompt "
12/2005 © Ver 1.0 Polyline uzunluğu yazımı.")
(setvar "cmdecho" 0)
(setq akyuk (getvar "TEXTSIZE"))
(setq akstl (getvar "TEXTSTYLE"))
(setq a1b 1)


(while (/= a1b nil)
(setq a1b (car (entsel "
Polyline ı seçiniz: ")))
(if (/= a1b nil)
(progn
(setq ayar (entget a1b))
(setq oz (cdr (assoc 0 ayar)))
(if (= oz "LWPOLYLINE")
(progn
(redraw a1b 3)
(command "area" "o" a1b)
(setq p-uzunluk (getvar "perimeter"))
(setq baz-nok (cdr (assoc 10 ayar)))

(princ (strcat "
Uzunluk: " (rtos p-uzunluk)" dir."))

(setq yazi (strcat "L: " (rtos p-uzunluk)))

(command "text" baz-nok "" "" yazi)
(setq baz-nok nil)
(setq y_d 1)
(if (/= a1b nil)
(redraw a1b 4))
)
(princ (strcat "
Seçilen obje Polyline değil, " oz " dir."))
)
))
)
(princ "
İşlem bitti.")
(princ)
)


*********************
polyline bölümünün komutu c:plu olarak gözüküyor, "c : p l u" (aralarda boşluk olamadan) olacak

09.04.2008 12:19    

serhatgokhan
plu lisp'i yaziyi polyline'in baslangic noktasina yaziyor. Bunu, kapali bir polyline alanin ortasina yazdirabilirmiyiz?

09.04.2008 12:46    

sinanc
Polyline ile ilgili çizimini veya resmi görebilirmiyiz ?

sinanc (09.04.2008 12:53 GMT)

09.04.2008 13:02    

serhatgokhan
tabi... plu komutunu verip polyline'a tikladigimda yaziyi ortasina yazsin istiyorum...[img][URL=http://img213.imageshack.us/my.php?image=asdot9.png][IMG]http://img213.imageshack.us/img213/2962/asdot9.th.png[/IMG][/URL][/img]

09.04.2008 13:34    

sinanc
Alıntı
serhatgokhan :
tabi... plu komutunu verip polyline'a tikladigimda yaziyi ortasina yazsin istiyorum...



soldaki girintili-çıkıntılı polyline işi bozuyor !
ama bir deneme yaparız..

09.04.2008 13:41    

serhatgokhan
cok tesekkurler...

Yazilarin tam ortada olmasi okadar onemli degil.
Asil maksat yazilarin hangi alana (polyline'a) ait oldugunu kolayca gorebilmek.
Lisp'in su anki halinde (eger polyline baslangic noktalari birbirine yakinsa) yazilar karisabiliyor.

09.04.2008 14:39    

sinanc
Çalışma mantığı biraz değişti ama işini görür.
biraz incele bakalım..

(defun c:pluz()
(prompt"\n12/2005 © Ver 1.0 Polyline uzunluğu yazımı.")
(setvar "cmdecho" 0)
(while
(setq bpn(getpoint"\nPolyline çevrili alanın içine bir nokta işaretleyin !.."))
(command "BPOLY" bpn "")
(setq a1b(entlast))
(setq ayar(entget a1b))
(command "area" "o" a1b)
(entdel(entlast))
(setq p-uzunluk(getvar "perimeter"))
(setq yazi(strcat "L: "(rtos p-uzunluk)))
(command "text" bpn "" "" yazi)
)
)

09.04.2008 14:49    

serhatgokhan
cok guzel olmus ellerine saglik :) ama ufak bi sorun var; dogru sonuc vermesi icin alanin icinin tamamen bos olmasi gerek gibi gorunuyor. buda karisik cizimlerde sorun cikartabilir.

soyle yapabilirmiyiz: once, olcmek istedigimiz polyline'i secip ondan sonra yazi icin yer gostersek...

Tabi musait oldugunuz bi zamanda... yine tesekkurler.

09.04.2008 14:54    

sinanc
Alıntı
serhatgokhan :
cok guzel olmus ellerine saglik :) ama ufak bi sorun var; dogru sonuc vermesi icin alanin icinin tamamen bos olmasi gerek gibi gorunuyor...

soyle yapabilirmiyiz: once, olcmek istedigimiz polyline'i secip ondan sonra yazi icin yer gostersek...



Verdiğin resime göre düşündüm, Bpoly komutu için alanın içi boş olması gerekiyor !
dediğin şekilde de yapılabilir ama ben tıklama (işlem) sayısını en aza indirmeye çalışıyorum !

10.04.2008 04:50    

serhatgokhan
o zaman bi resim daha gonderiyim :)

[img][URL=http://img137.imageshack.us/my.php?image=asddqz1.png][IMG]http://img137.imageshack.us/img137/2016/asddqz1.th.png[/IMG][/URL][/img]

bu arada bi sorun daha var: eger polyline kapali degilse (yanlislikla ucunda bir aciklik kalmis olsa) lisp uzunlugu yaziyor ama ayni zamanda polyline'i da siliyor. sadece yazi kaliyor...

10.04.2008 07:40    

sinanc
(defun c:pluz()
(setvar "cmdecho" 0)
(setq a1b nil)
(while
(setq a1b(car(entsel"\nPolyline seçiniz: ")))
(setq ayar(entget a1b))
(setq oz (cdr(assoc 0 ayar)))

(if(/= oz "LWPOLYLINE")
(alert"\nSeçtiğiniz Obje Polyline değil !")
(progn
(redraw a1b 3)
(setq bpn(getpoint"\nYazı için nokta işaretleyin !.."))
(setq ayar(entget a1b))
(command "area" "o" a1b)
(setq p-uzunluk(getvar "perimeter"))
(setq yazi(strcat "L: "(rtos p-uzunluk)))
(command "text" bpn "" "" yazi)
(redraw a1b 4)
);progn sonu
);if
);while
(princ)
);defun

10.04.2008 07:51    

serhatgokhan
super oldu kardes :) ellerine saglik :)

10.04.2008 08:06    

sinanc
güle güle kullan...

30.07.2011 18:47    

mumtazak
Merhaba arkadaşlar,
ben bir lisp yazmaya çalışıyorum ama bir kaç yerde tıkandım. amacım şeçilen bir polyline ının üstüne eşit aralıklarla istenilen adette kot atamak. örneğin bir polylineını baslangıc kotu 100 m olsun son kotu da 110 m olsun ve kullanıcı polilineın ustune esıt aralıklarla 4 adet kot atmak ıstedıgınde polylineı 5 parcaya bölerek ara yerlere 102, 104, 106 ve 108 m kotlarını yazdırabilsin. bu konuda bana yardımcı olabilirseniz çok memnun olurum, teşekkür ederim.

30.07.2011 20:06    

ehya
mumtazak

lisp yazarken tıklandığınızı söylemişsiniz ancak lisp isteğinde bulunmuşsunuz.
madem lisp yazarken tıkandınız, kendinizi geliştirmek için yardım isteseniz daha iyi olmaz mı?

31.07.2011 10:43    

mumtazak
Lisp yazarken tıklandığınızı söylemişsiniz ancak lisp isteğinde bulunmuşsunuz.
madem lisp yazarken tıkandınız, kendinizi geliştirmek için yardım isteseniz daha iyi olmaz mı?
özür dilerim kendimi tam olarak ifade edememiş olabilirim, sitenize yeni üye olduğum için ne yapmam gerektiğini tam olarak bilemedim, söylediğim gibi bunu yapabilen bir lispe ihtiyacım var. yardımcı olabilirseniz teşekkür ederim.

31.07.2011 15:10    

ProhibiT
Kod:

(defun c:pLkoT (/ sKot eKoT parC incK pLLn LstO noKs pvTo)
  (setvar "cmdecho" 0)
  (command "_.undo" "group")
  (setq sKoT (setq aKoT (getreal "\n Başlangıç Kot değeri: "))
        eKoT (getreal "\n     Bitiş Kot değeri: ")
        parC (getint "\nKaç parçaya bölünecek: ")
        incK (/ (- eKoT sKoT) parC)
        pLLn (entsel "\n     PolyLine seçiniz: ")
        LstO (entlast)
        noKs nil)
  (command "_.divide" pLLn parC)
  (while (setq pvTo (entnext LstO))
    (setq noKs (append noKs (list (assoc 10 (entget pvTo)))))
    (entdel pvTo))
  (mapcar '(lambda (pr1) (entmake (list
                 (cons 0 "text") pr1 (cons 40 (getvar "textsize"))
                 (cons 1 (rtos (setq aKoT (+ aKoT incK)) 2 2))))) noKs)
  (command "_.undo" "e")
  (princ)
)

ProhibiT (01.08.2011 09:46 GMT)

01.08.2011 14:09    

mumtazak
Prohibit
size nasıl teşekür edeceğimi bilemiyorum, çok yardımcı oldunuz, allah razı olsun.
mümtazak

11.11.2015 17:30    

furkinafaso
Merhaba arkadaşlar . Ben metraj hazırlıyorum da . polyline hattımın üstüne uzunluğunu yazdırmak istiyorum . netcad kullananlar bilir uzunluk yazdır komutu var . onun gibi birşey var mıdır acaba .

> 1 <
Copyright © 2004-2022 SQL: 1.552 saniye - Sorgu: 96 - Ortalama: 0.01617 saniye