면적계산해주는 리습인데요, 다운받아서 쓰고있는데요.
pline 내부의 아무면이나 찍으면 면적이 써지는데요
표현이 26.95 이렇게 됩니다.
26.95 m2로 표현되도록 수정바랍니다.
========================================
; 두점의 거리를 계산하여 텍스트로 표기하는 명령어
;——————————————–
(defun c:cond()
(setvar “cmdecho” 0)
(setq d_ts (getvar “textsize”) os (getvar “osmode”) dlf (getvar “dimlfac”))
(setq ht d_ts)
(prompt “n Text Height<“) (prin1 ht) (prompt “>: “)
(setq ht (getint))
(if (= ht nil) (setq ht d_ts))
(setq scal (getint “n Input drawing scale (mm->1000 / m->1) -> “))
(if (= scal nil) (setq scal 1))
(prin1)
)
;;===========================================
; Distance PRG
; 두점의 거리를 계산하여 텍스트로 표기하는 명령어
;——————————————–
(defun c:qds(/ pt1 pt2 di dis ang an)
(setvar “osmode” 32)
(setq pt1 (getpoint “n Distance first point-> “))
(setq pt2 (getpoint pt1 “n Distance second point-> “))
(setq di (distance pt1 pt2)
ang (angle pt1 pt2)
an (angtos ang 0 4))
(setvar “osmode” 0)
(setq dis (rtos (/ di scal) 2 2))
(command “text” “j” “r” pt1 ht an dis)
(prompt “nEnter text point->”)
(command “move” “l” “” pt1 pause)
(setvar “osmode” os)
(prin1)
)
;;===========================================
; Distance PRG
; 두점의 거리(dx)를 계산하여 텍스트로 표기하는 명령어
;——————————————–
(defun c:dx(/ pt1 pt2 di dis dx dxx ang an)
(princ “…DISTANCE PROGRAM…”)
(setvar “osmode” 1)
(setq pt1 (getpoint “n Distance first point-> “))
(setq pt2 (getpoint pt1 “n Distance second point-> “))
(setq di (distance pt1 pt2)
dX (- (car pt2) (car pt1))
ang (angle pt1 pt2)
an (angtos ang 0 4))
(setvar “osmode” 0)
(setq dis (rtos (/ di scal) 2 2))
(setq dxx (rtos (/ dx scal) 2 2))
(command “text” “j” “c” pt1 ht “0” dxx)
(prompt “nEnter text point->”)
(command “move” “l” “” pt1 pause)
(setvar “osmode” os)
(prin1)
)
;;===========================
; DISTANCE PRG.
; ->선의 길이를 구하고자 할때쓰는명령
;—————————-
(defun c:ds(/ pt1 pt2 pt3 di dis)
(princ “…DISTANCE PROGRAM…”)
(setvar “osmode” 1)
(setq pt1 (getpoint “n First point-> “))
(setq pt2 (getpoint pt1 “n Next point-> “))
(setq di (distance pt1 pt2))
(while (/= pt2 nill)
(setq pt1 pt2)
(setq pt2 (getpoint pt1 “n Next point-> “))
(if (/= pt2 nil) (setq di (+ di (distance pt1 pt2))))
)
(setq dis (rtos (/ di scal) 2 2))
(setvar “osmode” os)
(command “text” “j” “c” pt1 ht “0” dis)
(prompt “nEnter text point->”)
(command “move” “l” “” pt1 pause)
)
;;선택된 Line의 길이을 모두 더하는 명령
(defun c:lp(/ ss en n n1 k tot dis dis1)
(prompt “n더하고자하는 line을 선택-> “)
(setq ss (ssget))
(setq n1 (sslength ss))
(setq n n1 k 0)
(setq tot 0 dis 0 dis1 0)
(while (<= 1 n)
(setq en (ssname ss k))
(setq stype (cdr (assoc 0 (entget en))))
(if (= stype “LINE”)(progn
(setq spt (cdr (assoc 10 (entget en))))
(setq ept (cdr (assoc 11 (entget en))))
(setq dis1 (distance spt ept))
(setq dis (/ dis1 scal))(prin1 dis)
))(terpri)
(if (= stype “LWPOLYLINE”)(progn
(command “area” “e” en)
(setq dis1 (getvar “perimeter”))
(setq dis (/ dis1 scal))
))
(setq tot (+ tot dis))
(setq n (- n 1))
(setq k (+ k 1))
)(terpri)(prompt “총”)(prin1 n1)(prompt “개의 라인…”)
(prompt “전체길이 : “)(prin1 tot)(prompt ” m”)
(setq tot (rtos tot 2 2))
(setq pt1 (getpoint “n Enter text point-> “))
(command “text” “j” “c” pt1 ht “0” tot)
(prin1)
)
;;===========================================================
; Number plus
; ->두 수의 합 구하기
;;———————————————————–
(defun c:np(/ ss grpt pt1 n k tot en tv rtv an)
(prompt “nSelect number->”)
(setq ss (ssget))
(setq grpt (grread T))
(setq pt1 (cadr grpt))
(setq n (sslength ss))
(setq k 0 tot 0)
(while (<= 1 n)
(setq en (ssname ss k))
(setq tv (cdr (assoc 1 (entget en))))
(setq rtv (atof tv))
(setq tot (+ tot rtv))
(setq n (- n 1))
(setq k (+ k 1))
)
(setq tot (rtos tot 2 2))
(prompt “n합 계 : “) (prin1 tot)
(command “text” “j” “c” pt1 ht “0” tot)
(prompt “nEnter text point->”)
(command “move” “l” “” pt1 pause)
(prin1)
)
;;===========================================================
; Quick area
; ->point를 선택하여 화면에 면적을 자동으로 표기
;;———————————————————–
(defun c:qa(/ pt1 ar1 ar2)
(setq os_old (getvar “osmode”))
(setvar “osmode” 0)
(setq pt1 (getpoint “nPick a point ->”))
(command “bpoly” pt1 “” )
(command “area” “o” “l”)
(setq ar1 (/ (getvar “area”) (* scal scal)))
(setq ar2 (rtos ar1 2 2))
(command “erase” “l” “”)
(command “text” “j” “c” pt1 ht “0” ar2)
(prompt “nEnter text point->”)
(command “move” “l” “” pt1 pause)
(setvar “osmode” os_old)
(prin1)
)