25.04.2015 22:18    

heikou
Kod:

Arkadaşlar;

Siteden bulduğum bir Lisp dosyasında biraz oynayarak resimde görüldüğü şekilde bir kanalizasyon lisp yapmaya çalıştım. Ancak aşağıda yazacağım eksiklikler hakkında yardımcı olacaklar varsa çek sevinirim.

*Çizgi tipi "pline" olduğu için farklı KOT larda bulunan noktaları birleştiremiyorum, ve buna bağlı olarak başlangıç ve bitiş KOT larını yazdıramıyorum.
*Farklı KOT larda bulunan noktaların "3dpoly" kullanarak birleştirilmesi durumunda başlangıç ve bitiş noktalarının KOT değerlerini yazdırmam gerekiyor.



(defun c:KnL (/ *error* )
(setvar "cmdecho" 0) (command "undo" "group")
(setq oosm (getvar "osmode")) (setq ola (getvar "clayer"))
(defun *error* (er) (setvar "osmode" oosm)
(setvar "clayer" ola) (command "undo" "e") (princ er))
(if (not (tblsearch "Layer" "AKAR_YONU"))
(entmake (list
(cons 0 "Layer") (cons 100 "AcDbSymbolTableRecord")
(cons 100 "AcDbLayerTableRecord") (cons 2 "AKAR_YONU")
(cons 62 1) (cons 70 0)
(cons 290 1) (cons 370 0)
)
)
)
(if (not (tblsearch "Layer" "AKAR_MESAFE"))
(entmake (list
(cons 0 "Layer") (cons 100 "AcDbSymbolTableRecord")
(cons 100 "AcDbLayerTableRecord") (cons 2 "AKAR_MESAFE")
(cons 62 30) (cons 70 0)
(cons 290 1) (cons 370 0)
)
)
)
(if (not (tblsearch "Layer" "AKAR_YAZI"))
(entmake (list
(cons 0 "Layer") (cons 100 "AcDbSymbolTableRecord")
(cons 100 "AcDbLayerTableRecord")(cons 2 "AKAR_YAZI")
(cons 62 30) (cons 70 0)
(cons 290 1) (cons 370 0)
)
)
)
(if (not yy) (setq yy 1))
(if (setq sn (getreal (strcat "\nYazı yüksekliği --> <" (rtos yy) "> :")))
(setq yy sn) (setq sn yy))
(if (not ePp) (setq ePp 200))
(if (setq ol (getreal (strcat "\nØ Değeri --> <" (rtos ePp) "> :")))
(setq ePp ol) (setq ol ePp))
(setq son (strcat "%%c" (rtos epp 2 0) " " ""))
(while (not (setq n1 (getpoint "\nBaşlangıç noktası. "))))
(while (/= n1 nil)
(setq n2 (getpoint n1 "\nBitiş noktası. "))
(setq ac (angle n1 n2))
(if (and (<= ac 4.71239) (> ac 1.5708))
(setq ca (+ (angtof "180.00") ac))
(setq ca ac)
)
(setq di (+ (distance n1 n2) 1.0)
mdp (polar n1 (angle n1 n2) (/ (distance n1 n2) 2.0))
mhp (polar n1 (angle n1 n2) (/ (distance n1 n2) 4.0))
msp (polar mdp (angle n1 n2) (/ (distance n1 n2) 4.0))
n3 (polar n2 (+ ac 0) (* sn -1))
y1 (polar mhp (- ca (/ pi 2)) (* sn 1))
y2 (polar mdp (+ ca (/ pi 2)) (* sn 1))
y3 (polar msp (- ca (/ pi 2)) (* sn 1))
)
(setvar "clayer" "AKAR_YONU")
(setvar "osmode" 0)
(command "_pline" n2 "W" 0 (* sn 0.75) n3 "W" 0 0 n1 "")
(entmake
(list
(cons 0 "TEXT")
(cons 100 "AcDbEntity")
(cons 100 "AcDbText")
(cons 10 y3)
(cons 11 y3)
(cons 1 (strcat "L=" (rtos di 2 2) "m" ))
(cons 40 sn)
(cons 50 ca)
(cons 41 1)
(cons 72 1)
(cons 8 "AKAR_MESAFE")
(cons 73 2)
)
)
(entmake
(list
(cons 0 "TEXT")
(cons 100 "AcDbEntity")
(cons 100 "AcDbText")
(cons 10 y2)
(cons 11 y2)
(cons 1 son)
(cons 40 sn)
(cons 50 ca)
(cons 41 1)
(cons 72 1)
(cons 8 "AKAR_YAZI")
(cons 73 2)
)
)
(entmake
(list
(cons 0 "TEXT")
(cons 100 "AcDbEntity")
(cons 100 "AcDbText")
(cons 10 y1)
(cons 11 y1)
(cons 1 (strcat "1/" (rtos di 2 2) ))
(cons 40 sn)
(cons 50 ca)
(cons 41 1)
(cons 72 1)
(cons 8 "AKAR_MESAFE")
(cons 73 2)
)
)
(setvar "clayer" ola) (setvar "osmode" oosm) (command "_.undo" "e") (prin1)
(while (not (setq n1 (getpoint "\nBaşlangıç noktası. ")))))
)

heikou (25.04.2015 22:30 GMT)

> 1 <
Copyright © 2004-2022 SQL: 0.9 saniye - Sorgu: 42 - Ortalama: 0.02143 saniye