(defun c:elsl (/ siz os lt lay sslist ss index layerlist linelist linenumlist ent old8 dist txtlist txt totoalstr totoal subtotoal maxlen1 maxlen2 pt dist1 pt2 pt3)
(setq siz (getvar “TEXTSIZE”))
(setq txtHei (getdist (strcat “nTextSize <” (rtos (getvar ‘textsize) 2 2) “>: “)));텍스트 변경할 크기 입력
(if txtHei (setvar ‘textsize txtHei));텍스트 크기 변경
(vl-load-com)
(DEFUN CT_2018 ( new old str / l i ) (setq l (strlen new) i 0)
(while (setq i (vl-string-search old str i))
(setq str (vl-string-subst new old str i) i (+ i l))
)
str
)
(princ “n Eltity Length Sum”)
(setvar “cmdecho” 0)
(setq os (getvar “osmode”))
(setq lt (getvar “ltscale”))
(setq lt (getvar “TEXTSIZE”))
(setq lay (getvar “clayer”))
(setq sslist nil)
(setq ss (ssget (list (cons 0 “LINE,CIRCLE,ARC,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE”))))
(if ss
(progn
(setq index 0)
(setq layerlist nil)
(setq linelist nil)
(setq linenumlist nil)
(repeat (sslength ss)
(setq ent (ssname ss index))
(setq old8 (cdr (assoc 8 (entget ent))))
(setq dist (atof (rtos (/ (vlax-curve-getDistAtParam ent (vlax-curve-getEndParam ent)) 1000.0) 2 1)))
(if (assoc old8 layerlist)
(progn
(setq linelist (cons dist (cdr (assoc old8 layerlist))))
(setq layerlist (subst (cons old8 linelist) (assoc old8 layerlist) layerlist))
)
(progn
(setq layerlist (append layerlist (list (cons old8 (list dist)))))
)
)
(setq index (1+ index))
)
(setq txtlist (list (list “레이어종류” “객체수” “산출근거”)))
(setq maxlen1 0.0)
(setq maxlen2 0.0)
(setq totoalstr “”)
(setq totoal 0.0)
(foreach x layerlist
(setq txt “”)
(setq subtotoal 0.0)
(foreach xx (cdr x)
(setq txt (strcat txt “+” (rtos xx 2 1)))
(setq subtotoal (+ subtotoal xx))
)
(setq totoalstr (strcat totoalstr “+” (rtos subtotoal 2 1)))
(setq totoal (+ totoal subtotoal))
(setq txt (strcat (substr txt 2) “=” (rtos subtotoal 2 1) “m”))
(if (> (strlen (car x)) maxlen1) (setq maxlen1 (strlen (car x))))
(if (> (strlen (itoa (length (cdr x)))) maxlen2) (setq maxlen2 (strlen (itoa (length (cdr x))))))
(setq txtlist (append txtlist (list (list (car x) (itoa (length (cdr x))) txt))))
)
(setvar “osmode” 111)
(setq pt (getpoint “n 텍스트 삽입점 : “))
(if pt
(progn
(setvar “osmode” 0)
(foreach x txtlist
(if (tblsearch “layer” (nth 0 x)) ;
(setvar “clayer” (nth 0 x))
(setvar “clayer” lay)
)
(command “text” pt (* lt 2.5) 0.0 (nth 0 x))
(setq pt2 (polar pt 0 (* lt 35 ) ) pt3 (polar pt 0 (* lt 50 )) )
(command “text” pt2 (* lt 2.5) 0.0 (nth 1 x))
(command “text” pt3 (* lt 2.5) 0.0 (nth 2 x))
(setq pt (polar pt (+ (/ pi 2) pi) (* lt 5) ))
)
(setvar “clayer” lay)
(command “text” pt (* lt 2.5) 0.0 “TOTAL”)
(setq pt2 (polar pt 0 (* lt 35 ) ) pt3 (polar pt 0 (* lt 50 )) )
(command “text” pt2 (* lt 2.5) 0.0 “=”)
(command “text” pt3 (* lt 2.5) 0.0 (strcat (substr totoalstr 2) “=” (rtos totoal 2 1) “m”))
)
)
(setvar “osmode” os)
)
)
(princ)
)
1.산출리습인데요 실행을 하면 문자가 사용할때마다 몇배씩 커집니다….처음 입력한 값으로 계속 사용할수있게 부탁드립니다…
2. 나오는 숫자값을 소수점 둘째자리에서 반올림하여 표현하고 싶습니다.
고수님들.부탁드립니다..아무리해도 답이 안나오네요..감사합니다.
메일주소……