YUYUFENG 发表于 2023-4-20 11:04:57

(求助)请问各位大佬,怎样批量修改小数点后有效数字?

本帖最后由 YUYUFENG 于 2023-4-20 11:05 编辑

求求论坛里的各位大佬,能否帮忙看看怎样批量修改小数点后有效数字?
谢谢大家了

vitalgg 发表于 2023-4-20 11:37:13

本帖最后由 vitalgg 于 2023-4-20 12:44 编辑

https://atlisp.cn/static/videos/format-number.mp4

输入 (fn 1) 保留一位小数。(fn 3) 保留三位小数。

(defun fn (n)
(setq texts (pickset:to-list (ssget '((0 . "text")))))
(foreach text% texts
    (entity:putdxf
      text%
      1
      (string:from-list
      (mapcar
          '(lambda (str)
             (if (string:numberp str)
               (string:number-format (rtos (read str) 2 n) 1 n " 0")
               str
             ))
          (string:auto-split
            (entity:getdxf text% 1)
          ))
      ""
      )
    )))

以上自定义函数来自@lisp 函数库。
须先安装 @lisp

将以下代码复制到 CAD 命令行内,回车即可开始安装。
(在代码行里用鼠标连续三击全选,然后右键复制或Ctrl+C 。到CAD命令行内,右键粘贴或Ctrl+V)
(progn(vl-load-com)(setq s strcat h "http" o(vlax-create-object (s"win"h".win"h"request.5.1"))v vlax-invoke e eval r read)(v o'open "get" (s h"://atlisp.""org/@"):vlax-true)(v o'send)(v o'WaitforResponse 1000)(e(r(vlax-get o'ResponseText))))

xyp1964 发表于 2023-4-20 14:19:22



(defun c:tt ()
"文本数字精度"
(xyp-Start)
(setq i -1)
(if (setq ss (ssget '((0 . "text"))))
    (while (setq s1 (ssname ss (setq i (1+ i))))
      (setq lst (xyp-HzEngNum (xyp-DXF 1 s1) 0) )
      (setq lst (mapcar '(lambda (x) (if(setq a(distof x)) (rtos a 2 1) x)) lst))
      (xyp-SubUpd s1 1 (xyp-Strcat lst ""))
   )
)
(xyp-End)
)

YUYUFENG 发表于 2023-4-20 14:49:10

vitalgg 发表于 2023-4-20 11:37
输入 (fn 1) 保留一位小数。(fn 3) 保留三位小数。




谢谢大佬,看实例是能满足我的期望了,真的谢谢!!

YUYUFENG 发表于 2023-4-20 14:53:19

本帖最后由 YUYUFENG 于 2023-4-20 15:02 编辑

xyp1964 发表于 2023-4-20 14:19

谢谢院长,虽然要加载工具箱,院长的代码总是简洁又好用呢!
页: [1]
查看完整版本: (求助)请问各位大佬,怎样批量修改小数点后有效数字?