수고 많으십니다.
제가 사용하는 리습입니다만.
곱셈을 하거나 누눗셈을 하게 되면 소숫점이 사라지는 상황이 나오는데요.
나눠야 하는 대상이 소숫점이 있다보니.. 이걸 사용하게되면 없어지는 상황이 발생합니다 ㅠ.ㅠ
혹시 이 아래 있는 리습 문구중에 소숫점을 표현하고 싶다면 어디를 어떻게 추가변경 해야될까요??
(defun C:- (/ SUMTXT n objnew objlen cal ename no txtzn txt1 ftxt elist)
(setvar “CMDECHO” 1)
(setq n 0 t 0
objnew (ssget ‘((0 . “text”)))
objlen (sslength objnew)
cal (getstring “n Cal. Mark (+ – * /) :”)
sumtxt (getint “n 일률적으로 적용시키고자 하는값 :”)
)
(while (< n objlen)
(setq ename (ssname objnew n)
elist (entget ename))
(if (or (= “TEXT” (cdr (assoc 0 elist))) (= “MTEXT” (cdr (assoc 0 elist))) )
(progn
(setq txt (cdr (assoc 1 elist)))
(if (or (/= 0 (atoi (substr txt (strlen txt) (strlen txt)))) (= “0” (substr txt (strlen txt) (strlen txt))) )
(progn
(if (distof txt)
(setq txtzn txt)
(search-text)
);if
(if (= “+” cal) (setq no (+ (atoi txtzn) sumtxt)))
(if (= “-” cal) (setq no (- (atoi txtzn) sumtxt)))
(if (= “/” cal) (setq no (/ (atoi txtzn) sumtxt)))
(if (= “*” cal) (setq no (* (atoi txtzn) sumtxt)))
(if (distof txt)
(setq txt1 (itoa no))
(setq txt1 (strcat ftxt (itoa no)))
);if
(setq elist (subst (cons 1 txt1) (assoc 1 elist) elist))
(entmod elist)
);progn
);if
);progn
);if
(setq n (+ n 1))
);while
(princ)
)
어디를 어떻게 고쳐야 하는지는 상황에 따라 다를 수 있어서…
참고로만 알려드리자면…
atoi 대신 atof
itoa 대신 rtos
함수를 사용하시면 됩니다.
함수 사용법은 LISP 도움말을 참고하시기 바랍니다.
빠른 답반 감사합니다 ^^
빠른 답변 감사합니다 ^^