Slope Calculations 2
ตัวนี้เป็นแบบเลือกเส้นเอาเลย ทั้ง line หรือ Polyline โดยการหาตำแหน่ง start และ end ของเส้น
(defun c:slope2 (/ pt1 pt2 ptL ptT ang slp slple)
(vl-load-com)
(setq old_cmdecho (getvar "cmdecho")) ; cmdecho
(setvar "cmdecho" 0) ;;echo off
(if(and
(setq sel (entsel "\nSelect Slope line: "))
(setq ename (car sel))
(setq elist (entget ename))
)
(cond
((eq (cdr (assoc '0 elist)) "LINE")
(setq pt1 (cdr (assoc '10 elist))
pt2 (cdr (assoc '11 elist))
)
)
((eq (cdr (assoc '0 elist)) "LWPOLYLINE")
(setq pt_lst(mapcar 'cdr (vl-remove-if-not '(lambda (x) ( = (car x) 10)) elist))
pt1 (car pt_lst)
pt2 (last pt_lst)
)
)
); progn
); if
;;--------Test points Low or Height-----------------+
(if(and(>(car pt1)(car pt2))(>(cadr pt1)(cadr pt2)))
(setq ptL pt2
ptT pt1
)
(setq ptL pt1
ptT pt2
)
)
(setq ris (-(cadr ptT)(cadr ptL))) ;;Rise Vertical
(setq run (-(car ptT)(car ptL))) ;;Run Horizontal
(setq ang (/ (* (atan (/ ris run)) 180) pi)) ;;Angle of Degree
(setq angra (* ang (/ pi 180))) ;;Angle of Radial
(setq slp (*(/ ris run) 100.0)) ;;Slope %
(setq slple (/ ris (sin angra))) ;;Slope Length
(alert
(strcat "\nSlope = "(rtos slp 2 0) "%"
"\nSlope Length = "(rtos slple 2 3) "m."
"\nAngle = "(rtos ang 2 3) "\U+00B0"
)
)
(setvar "cmdecho" old_cmdecho)
(princ)
)
ไม่มีความคิดเห็น:
แสดงความคิดเห็น