(defun instr (s c / i l)
(setq i 1 l (strlen s))
(while (and (<= i l) (/= (substr s i 1) c)) (setq i (1+ i)))
(if (> i l) nil i)
)
(defun delzro (s / l)
(setq l (strlen s))
(cond ((= 0 l) “”)
(T (while (= “0” (substr s l 1))
(setq s (substr s 1 (setq l (1- l))))
)
(cond ((= “.” (substr s l 1)) (substr s 1 (1- l)))
(T s)
)
)
)
)
(defun c:NUMBER_SUM ()
(print “>> Number Sum”)
(setq n 0 t1 0 l_i 0 no 0 sum 0 ss nil)
(setq ss (ssget))
(if (/= ss nil)
(progn
(setq en (sslength ss))
(repeat en
(setq ent_i (cdr (assoc 0 (entget (ssname ss L_i)))))
(if (or (= ent_i “TEXT”) (= ent_i “MTEXT”)) (setq L_i (1+ L_i))
(ssdel (ssname ss L_i) ss))
)
(setq en (sslength ss))
(repeat en
(progn
(setq ename (ssname ss n) elist (entget ename))
(setq ent_i (cdr (assoc 0 (entget (ssname ss n)))))
(if (= ent_i “TEXT”) (progn
(setq tt (cdr (assoc 1 elist)))
(setq cnt 1)
(setq len (strlen tt))
(repeat len ;; delete comma
(setq sub_str (substr tt cnt 1))
(if (= (ascii sub_str) 44)
(progn
(setq len1 (- len cnt))
(setq str1 (substr tt 1 (- cnt 1)))
(setq str2 (substr tt (+ cnt 1) len1))
(setq tt (strcat str1 str2))
)
)
(setq cnt (+ cnt 1))
)
(setq no (atof tt))
(setq sum (+ sum no) n (+ n 1))
) ;;end progn
) ;;end if
(if (= ent_i “MTEXT”) (progn
(setq tt (cdr (assoc 1 elist)))
(setq cnt 1)
(setq len (strlen tt))
(repeat len ;; delete comma
(setq sub_str (substr tt cnt 1))
(if (= (ascii sub_str) 44)
(progn
(setq len1 (- len cnt))
(setq str1 (substr tt 1 (- cnt 1)))
(setq str2 (substr tt (+ cnt 1) len1))
(setq tt (strcat str1 str2))
)
)
(if (= sub_str “\”) ;; splite mulitiline text
(progn
(setq len1 (- len cnt))
(setq str1 (substr tt 1 (- cnt 1)))
(setq str2 (substr tt (+ cnt 2) len1))
(setq sum (+ sum (atof str1)))
(setq tt str2 cnt 1 len(- len 2))
)
)
(setq cnt (+ cnt 1))
)
(setq no (atof tt))
(setq sum (+ sum no) n (+ n 1))
) ;;end progn
) ;; end if
);; end progn
);; end repeat
(setq txh (cdr (assoc 40 elist)))
(setq textla (cdr (assoc 8 elist)))
;(setq pnt (getvar “LUPREC”) total (rtos sum 4))
(setq total (rtos sum)) ; modified by lado
(prompt (strcat “n합 = ” total))
(setq p1 (getpoint “n위치: “))
(command “layer” “s” textla “”)
(command “text” p1 txh “” total)
))
(princ)
)
(defun c:NS () (c:Number_Sum))
—————————————————————————————————————————————-
결과값이 소숫점이 나오지 않습니다. 소수 둘째 짜리까지 나오는 방법과 마지막에 합계
텍스트 표시할때 단위 m2로 표시되게 수정 방법 부탁드립니다. 복 많이 받으세요..