我希望能得到一些帮助来解释为什么我的LISP不起作用,我有一堆文字说29.999、27.999等,我需要改成30.00、28.00等。
我正在尝试使用以下内容,但无法使其工作。见下面的lisp
- ;ROUND TO 5
- (defun c:Rnd5(/ a n index b d c num newnum d1 b1 len last)
- (graphscr)
- (prompt "Select numbers to be rounded") (terpri)
- (setq a(ssget))
- (setq n (sslength a))
- (setq index 0)
- (repeat n
- (setq na (ssname a index))
- (setq b (entget na))
- (setq d (assoc 1 b))
- (setq c (cdr d)) ; text item
- (setq num (atof c));converts it to number
- (setq num (* 2 num));doubles it
- (setq num (rtos num 2 2));rounds off to 2 places
- (setq num (atof num));converts it to number
- (setq num (/ num 2));divides by 2
- (setq newnum (rtos num 2 3));rounds off
- (setq len (strlen newnum))
- (setq last (substr newnum len))
- (if (= last "0") (setq newnum (rtos num 2 2)))
- (setq d1 (cons(car d)newnum))
- (setq b1(subst d1 d b))
- (entmod b1)
- (setq index (+ 1 index))
- (print)
- )
- (defun round (num near)
- (* (fix (/ (+ num (/ near 2.0)) near)) near)
- )
-
|