사칙연산을 위해 아래 같은 리습을 사용중인데요.
소수점 관리가 안되네요..
예를들어
숫자 1 을 ad 명령어치고 /3 을 하면 0.3333 이렇게 나옵니다.
여기서 소수점 두째자리에서 끈고 싶은데.. 어떻게 해야하는지 알려주세요.
고수님들 부탁드립니다 ^^
(defun c:ad (/ sset ssl nsset tmp Caltxt olderr s)
(command “redraw”)
(defun caltext_error (s)
(setq *error* olderr)
(princ)
)
(defun CalDist ( y / Count Number? ifDot? CalString Char1 )
(setq Count 0 Number? nil ifDot? nil CalString “” )
(repeat (strlen y)
(setq Char1 (substr y (setq Count (1+ Count)) 1))
(cond
((and (>= Char1 “0”)(<= Char1 “9”))
(setq CalString (strcat CalString Char1) Number? ‘T )
)
((= Char1 “.”)
(setq CalString (strcat CalString Char1) Number? nil ifDot? ‘T ))
((= Char1 “””)(setq CalString (strcat CalString “*25.4”) ifDot? ‘T ))
((= Char1 “‘”) (setq CalString (strcat CalString “*304.8”) ifDot? ‘T ))
(‘T
(if (and (= Number? ‘T)(= ifDot? nil))
(setq CalString (strcat CalString “.0” Char1))
(setq CalString (strcat CalString Char1))
)
(setq Number? nil ifDot? nil)
)
)
)
(if (and (= Number? ‘T)(= ifDot? nil))
(setq CalString (strcat CalString “.0”))
)
(cal CalString)
)
(defun Caltext_Main ()
(setq ssl (sslength sset) nsset (ssadd))
(while (> ssl 0)
(setq tmp (ssname sset (setq ssl (1- ssl))))
(if (= (cdr (assoc 0 (entget tmp))) “TEXT”)
(ssadd tmp nsset)
)
)
(setq ssl (sslength nsset) sset nsset)
(princ ssl)(princ ” text entities found. “)
(if (> ssl 0)(progn
(setq Caltxt (getstring T “nAdd. text: “))
(if (and (/= (substr Caltxt 1 1) “-“)
(/= (substr Caltxt 1 1) “*”)
(/= (substr Caltxt 1 1) “/”)
)
(setq Caltxt (strcat “+” Caltxt))
)
))
(while (> ssl 0)
(setq ent (entget (ssname sset (setq ssl (1- ssl)))))
(setq nt (rtos (CalDist (strcat (cdr (assoc 1 ent)) Caltxt))))
(if (> (strlen nt) 0)
(entmod (subst (cons 1 nt) (assoc 1 ent) ent))
)
)
)
(setq olderr *error* *error* caltext_error)
(if (null cal)
(cond
((= (substr (getvar “ACADVER”) 1 2) “14”)(arxload “GEOMCAL”))
(‘T (arxload “GEOMCAL”))
)
)
; (princ “nCALTEXT 1.0 by Oh Gue Chul. E-mail : gocad@chollian.net“)
; (princ “nSelect text to calculate…”)
(if (setq sset (ssget)) (Caltext_Main))
(setq *error* olderr)
(princ)
(command “redraw”)
)
;(princ ” TEXTCAL loaded.”)
;(princ)