给你。。。我找到了一个旧代码。
似乎与我2011年Acad上的单一测试一起工作。
只需键入NP,输入精度并选择文字/多行文字。
- ;4-9-09
- ;Implements user specified precision on integers with or without text
- ;used getPrec by CAB
- (defun c:NP (/ RtosPrec ss x Number Prec charlist n snumber numlist char strippednumber nnumber NewString)
- (vl-load-com)
- (setq RtosPrec (getint "Enter Precision to force on all Text and MText Integers:"))
- (setq ss (ssget '((-4 . "<OR")(0 . "TEXT")(0 . "MTEXT")(-4 . "OR>"))))
- (setq x 0)
- (Repeat (sslength ss)
- (progn
- (setq Number (ssname ss x))
- (defun getPrec (str)
- (if (vl-string-search "/" str)
- (setq str (vl-string-right-trim "0" (rtos (distof str) 2 ))
- )
- (if (vl-string-search "." str)
- (- (strlen str)(vl-string-search "." str) 1)
- 0
- )
- )
- (setq Prec (getprec (cdr (assoc 1 (entget Number)))))
- (setq charlist (vl-string->list (cdr (assoc 1 (entget Number)))))
- (setq n 0 snumber nil)
- (setq numlist (list "0" "1" "2" "3" "4" "5" "6" "7" "8" "9"))
- (repeat (length charlist)
- (setq char (chr (nth n charlist)))
- (if (member char numlist)
- (setq snumber (append snumber (list char)))
- );if
- (setq n (1+ n))
- );repeat
- (if snumber
- (progn
- (setq StrippedNumber 0)
- (setq n (length snumber))
- (setq char 0)
- (repeat (- n prec)
- (setq StrippedNumber (+ StrippedNumber (* (atoi (nth char snumber))(expt 10 (1- (- n prec))))))
- (setq n (1- n)
- char (1+ char)
- );setq
- );repeat
- (setq n prec)
- (setq char (length snumber))
- (repeat prec
- (setq StrippedNumber (+ StrippedNumber (* (atoi (nth (1- char) snumber))(expt 0.1 n))))
- (setq n (1- n)
- char (1- char)
- );setq
- );repeat
- (setq snumber (rtos strippednumber 2 prec))
- (setq nnumber (rtos strippednumber 2 rtosprec))
- (setq NewString
- (strcat
- (substr (cdr (assoc 1 (entget Number))) 1 (- (length (vl-string->list (cdr (assoc 1 (entget Number)))))(length (vl-string->list snumber))))
- nnumber
- )
- )
- (entmod (subst (cons 1 NewString)(assoc 1 (entget Number)) (entget Number)))
- );progn
- );if
- );progn
- (setq x (1+ x))
- );repeat
- );defun
|