라인합을 텍스트로 표시해주는 리습인데요.
표시가 현재는 소수점이하는 반올림되는데. 소수점 2째 자리까지 표시하는 것으로 수정부탁드려요.. 고수님들~~
(DEFUN C:tl(/ eg egl n l ne entname entn p1 p2 l2 radi l_ength)
(SETVAR “cmdecho” 1)
(setq old_osm (getvar “osmode”)) ; 예전 오스냅 저장
(SETQ EG (ssget “:L” (list(cons 0 “line,lwpolyline,CIRCLE,ARC”))))
(SETQ EGL (SSLENGTH EG))
(SETQ N 0)
(setq l 0)
(setq ne 0)
(WHILE (< N EGL)
(SETQ ENTN (SSNAME EG N))
(SETQ ENT (ENTGET ENTN))
(setq entname (assoc 0 ent))
(setq entname (cdr entname))
(if (= entname “LINE”)
(progn
(SETQ p1 (ASSOC 10 ENT))
(SETQ p2 (ASSOC 11 ENT))
(SETQ p1x (car (CDR p1)))
(SETQ p1y (CaDdR p1))
(SETQ p2x (car (CDR p2)))
(SETQ p2y (CaDdR p2))
(setq l2 (sqrt (+ (expt (- p1x p2x) 2) (expt (- p1y p2y) 2))))
(setq l (+ l l2))
(setq ne (+ ne 1))
)
)
(if (= entname “CIRCLE”)
(progn
(SETQ p1 (ASSOC 40 ENT))
(SETQ radi (cdr p1))
(setq l2 (* 2 (* pi radi)))
(setq l (+ l l2))
(setq ne (+ ne 1))
)
)
(if (= entname “ARC”)
(progn
(SETQ p1 (ASSOC 40 ENT))
(SETQ radi (cdr p1))
(SETQ p1 (ASSOC 50 ENT))
(SETQ p2 (ASSOC 51 ENT))
(SETQ p1R (CDR p1))
(SETQ p2R (CDR p2))
(SETQ TH (ABS (- P1R P2R)))
(setq l2 (* RADI TH))
(setq l (+ l l2))
(setq ne (+ ne 1))
)
)
(if (or (= entname “LWPOLYLINE”)(= entname “POLYLINE”))
(progn
(command “area” “e” entn)
(setq l2 (getvar “perimeter”))
(setq l (+ l l2))
(setq ne (+ ne 1))
)
)
(SETQ N (+ 1 N))
)
(princ “n >>>>> “)
(if (> egl ne)
(progn
(princ ne)(princ ” of “)(princ egl)
(princ ” objects are measured // “)
)
)
(princ ” Total length is “)
(setq l_ength (rtos (/ l 1) 2 0))
(prin1 l_ength)
(SETVAR “osmode” 0)
(setq oslay (getvar “clayer”))
(setq pt (getpoint “nText Point: “))
(command “layer” “m” “길이” “”)
(command “text” pt “1000” “” l_ength)
(command “layer” “s” oslay “”)
(setvar “cmdecho” 1)
(setvar “blipmode” 0)
(SETVAR “osmode” old_osm) ;; 예전 오스냅 재사용
(princ)
)