(defun c:tt3(/ ss en ens n n1 k k1 tot dis dis1 siz sizh bas bas2 bas3 cs1 x1 y1 t1 text_out os adoc space th ss cp tb)
(prompt “nCommand: Line PPlus…”)
(vl-load-com)
(setq adoc (vla-get-activedocument (vlax-get-acad-object)))
(setq space (vlax-get adoc (if (= (getvar “cvport”) 1) ‘paperspace ‘modelspace)))
; 글자크기 지정
(setq siz (getvar “TEXTSIZE”))
(setq siz (getreal (strcat “n글자크기를 지정해 주세요 : “)))
(if (not siz) (setq siz (getvar “TEXTSIZE”)))
(setq sizh (/ siz 1.2))
(setq cs1 (* siz 2))
(setq k 0)
(prompt “n더하고자하는 line을 선택-> “)
;(setq ss (ssget))
(if (setq ss (ssget ‘((0 . “*LINE”))))
(foreach x (mapcar ‘vlax-ename->vla-object (vl-remove-if ‘listp (mapcar ‘cadr (ssnamex ss))))
(setq cp (vlax-curve-getpointatdist x (* (vlax-curve-getdistatparam x (vlax-curve-getendparam x)) 0.5)))
(setq t1 (itoa (+ 1 k)))
(setq text_out (strcat t1 “) ” (rtos (/ (vlax-get x ‘Length) 1000) 2 1)))
(setq tb (vla-addtext space text_out (vlax-3d-point cp) sizh))
(vla-put-alignment tb 10)
(vla-put-textalignmentpoint tb (vlax-3d-point cp))
(vla-update tb)
(setq k (+ 1 k))
)
)
(mapcar ‘vlax-release-object (list adoc space tb))
(princ)
(setq n1 (sslength ss))
(setq n n1 k 0)
(setq tot 0 dis 0 dis1 0)
(setq text_all “”)
(setq bas (getpoint “전체데이터 화면표시 위치:”))
(setq os (getvar “osmode”))
(setvar “osmode” 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 1000.0))(prin1 dis)
))(terpri)
(if (= stype "LWPOLYLINE")(progn
(command "area" "e" en)
(setq spt (cdr (assoc 10 (entget en))))
(setq dis1 (getvar "perimeter"))
(setq dis (/ dis1 1000.0))
))
; Text Screen
(setq k1 (+ 1 k))
(setq t1 (itoa (+ 1 k)))
(setq text_out (strcat t1 ") "))
(setq t1 (rtos dis 2 1))
(setq text_out (strcat text_out t1))
(setq x1 (car bas) y1 (cadr bas))
(setq y1 (- y1 (* siz (* 2 (+ 1 k)))))
(setq bas2 (list x1 y1))
;(command "text" "s" "STANDARD" spt sizh 0 t1)
(command "circle" bas2 "d" cs1)
(command "text" "m" bas2 siz 0 k1)
(setq x1 (+ x1 (* siz 4)))
(setq y1 (- y1 (/ siz 2)))
(setq bas2 (list x1 y1))
(command "text" "s" "STANDARD" bas2 siz 0 t1)
(setq tot (+ tot dis))
(setq n (- n 1))
(setq k (+ k 1))
)(terpri)
(prompt "총")(prin1 n1)(prompt "개의 라인…")
(prompt "전체길이 : ")(prin1 tot)(prompt " m")
(prin1)
(setq text_out "Total Length: ")
(setq t1 (rtos tot 2 1)) ; 끝의숫자가 소숫점 자리수임 ( 0 ~ 4 가능 )
(setq text_out (strcat text_out t1))
(setq text_out (strcat text_out text_all))
; Text Screen
(setq x1 (car bas) y1 (cadr bas))
(setq y1 (+ y1 (* siz 2)))
(setq bas2 (list x1 y1))
(command "text" "s" "STANDARD" bas2 siz 0 text_out)
(setvar "osmode" os)
(princ)
)
“” 유니코드 때문에 변경해서 올려드립니다.
(defun c:tt3(/ ss en ens n n1 k k1 tot dis dis1 siz sizh bas bas2 bas3 cs1 x1 y1 t1 text_out os adoc space th ss cp tb)
(prompt "nCommand: Line PPlus…")
(vl-load-com)
(setq adoc (vla-get-activedocument (vlax-get-acad-object)))
(setq space (vlax-get adoc (if (= (getvar "cvport") 1) 'paperspace 'modelspace)))
; 글자크기 지정
(setq siz (getvar "TEXTSIZE"))
(setq siz (getreal (strcat "n글자크기를 지정해 주세요 : ")))
(if (not siz) (setq siz (getvar "TEXTSIZE")))
(setq sizh (/ siz 1.2))
(setq cs1 (* siz 2))
(setq k 0)
(prompt "n더하고자하는 line을 선택-> ")
;(setq ss (ssget))
(if (setq ss (ssget '((0 . "*LINE"))))
(foreach x (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
(setq cp (vlax-curve-getpointatdist x (* (vlax-curve-getdistatparam x (vlax-curve-getendparam x)) 0.5)))
(setq t1 (itoa (+ 1 k)))
(setq text_out (strcat t1 ") " (rtos (/ (vlax-get x 'Length) 1000) 2 1)))
(setq tb (vla-addtext space text_out (vlax-3d-point cp) sizh))
(vla-put-alignment tb 10)
(vla-put-textalignmentpoint tb (vlax-3d-point cp))
(vla-update tb)
(setq k (+ 1 k))
)
)
(mapcar 'vlax-release-object (list adoc space tb))
(princ)
(setq n1 (sslength ss))
(setq n n1 k 0)
(setq tot 0 dis 0 dis1 0)
(setq text_all "")
(setq bas (getpoint "전체데이터 화면표시 위치:"))
(setq os (getvar "osmode"))
(setvar "osmode" 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 1000.0))(prin1 dis)
))(terpri)
(if (= stype "LWPOLYLINE")(progn
(command "area" "e" en)
(setq spt (cdr (assoc 10 (entget en))))
(setq dis1 (getvar "perimeter"))
(setq dis (/ dis1 1000.0))
))
; Text Screen
(setq k1 (+ 1 k))
(setq t1 (itoa (+ 1 k)))
(setq text_out (strcat t1 ") "))
(setq t1 (rtos dis 2 1))
(setq text_out (strcat text_out t1))
(setq x1 (car bas) y1 (cadr bas))
(setq y1 (- y1 (* siz (* 2 (+ 1 k)))))
(setq bas2 (list x1 y1))
;(command "text" "s" "STANDARD" spt sizh 0 t1)
(command "circle" bas2 "d" cs1)
(command "text" "m" bas2 siz 0 k1)
(setq x1 (+ x1 (* siz 4)))
(setq y1 (- y1 (/ siz 2)))
(setq bas2 (list x1 y1))
(command "text" "s" "STANDARD" bas2 siz 0 t1)
(setq tot (+ tot dis))
(setq n (- n 1))
(setq k (+ k 1))
)(terpri)
(prompt "총")(prin1 n1)(prompt "개의 라인…")
(prompt "전체길이 : ")(prin1 tot)(prompt " m")
(prin1)
(setq text_out "Total Length: ")
(setq t1 (rtos tot 2 1)) ; 끝의숫자가 소숫점 자리수임 ( 0 ~ 4 가능 )
(setq text_out (strcat text_out t1))
(setq text_out (strcat text_out text_all))
; Text Screen
(setq x1 (car bas) y1 (cadr bas))
(setq y1 (+ y1 (* siz 2)))
(setq bas2 (list x1 y1))
(command "text" "s" "STANDARD" bas2 siz 0 text_out)
(setvar "osmode" os)
(princ)
)
(setq text_out (strcat t1 “) ” (rtos (/ (vlax-get x ‘Length) 1000) 2 1))) <= 이부분
(setq text_out (strcat t1 ")" (rtos (vlax-get x ‘Length) 2 1))) 이렇게 수정하심 됩니다