各位老大帮忙改下这个程序,数字除以1000保留三位小数后面是0的话忽略
(defun c:SZCQ (/ dxf lst lst2 name num ss)(setq ss (ssget '((0 . "MTEXT,TEXT"))))
(if (/= ss nil)
(repeat (setq num (sslength ss))
(setq name (ssname ss (setq num (1- num))))
(setq lst (StrType (cdr (assoc 1 (setq dxf (entget name))))))
(setq lst2 "")
(foreach element lst
(if (/= (atof element) 0.0)
(setq lst2 (strcat lst2 (rtos (/ (atof element) 1000.0))))
(setq lst2 (strcat lst2 element))
)
)
(entmod (subst (cons 1 lst2) (assoc 1 dxf) dxf))
)
)
(princ)
)
;;说明:字符串以数字分隔
;;参数:str:字符串
;;返回:分隔后的字符串
(defun str-cut (str / allst fst lst-number lst-str str->list)
(setq str->list (vl-string->list str))
(while str->list
(setq fst (car str->list))
(if (<= 46 fst 57)
(progn
(setq lst-number (cons fst lst-number))
(if lst-str
(setq Allst (cons (reverse lst-str) Allst))
)
(setq lst-str nil)
)
(progn
(setq lst-str (cons fst lst-str))
(if lst-number
(setq Allst (cons (reverse lst-number) Allst))
)
(setq lst-number nil)
)
)
(setq str->list (cdr str->list))
)
(if (not str->list)
(if lst-str
(setq Allst (cons (reverse lst-str) Allst))
(setq Allst (cons (reverse lst-number) Allst))
)
)
(mapcar'vl-list->string (reverse Allst))
)
;(str-cut "AA1.2bc2.5Cd,+-.25")
;("AA" "1.2" "bc" "2.5" "Cd,+-" ".25")
(setvar "DIMZIN" 8)
页:
[1]