明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 908|回复: 3

[提问] 帮忙修改数值求和

[复制链接]
发表于 2023-4-7 14:20:28 | 显示全部楼层 |阅读模式
请帮忙修改,文字在数值后面求和,或数值前后都有文字的求和

(print "文本数字求和(型如:钉23,钉23.12,23.12,钉,多行文字先炸开,不支持负数),命令:txtsum")

(defun c:txtsum(/ all endno aa bb cc wz tha tsum i)
(if (null xzz) (setq xzz 0))
(setq ALL (ssget(list (cons 0 "text"))))
(if all (SETQ nn (SSLENGTH ALL)))
(setq endno 0)
(setq tsum 0 i 0)
(WHILE (and (< endno nn) all)
(setq aa (ssname all endno))
(setq bb (entget aa))
(setq cc(cdr(assoc 1 bb)))
(setq wz(rdata cc))
(setq tha(substr cc (+ wz 1) ( - (strlen cc) wz -1)))
(if (= tha "") (setq tha "0"))
(setq tsum(+ tsum (atof tha)))
(setq i(1+ i))
(print (strcat (itoa i) ":文本 <" cc ">---数字 <" tha ">"))
(setq endno (+ endno 1))
)
(print (strcat "共" (itoa i) "个文本,和=" (rtos tsum)))
(print)
)
;;;
(defun rdata(str / len i aa)
(if (> (strlen str) 0)
(progn
(setq i (strlen str))
(setq aa(substr str (strlen str) 1))
(while (and (or (and (>= aa "0") (<= aa "9"))
(= aa ".")
)
(>= i 1)
)
(setq i(1- i))
(if (>= i 1) (setq aa(substr str i 1)))
)
)
)
(setq i i)
)

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-4-7 22:19:26 | 显示全部楼层
  1. (defun c:txtsum(/ i lm-str2ch num ss str tha tsum)
  2.         (defun lm-Str2ch (String / positioni YPOutString)
  3.                 (setq positioni -1 aiilst'() jci 0)
  4.                 (repeat (strlen string)
  5.                         (setq ascm(vl-string-elt string (setq positioni (+ positioni 1))))
  6.                         (if (or(< 47 ascm 58)(= ascm 45)(= ascm 46)(= ascm 32))
  7.                                 (setq aiilst(append aiilst (list ascm)))
  8.                                 (setq jci (1+ jci))
  9.                         )
  10.                 )
  11.                 (car(mapcar'vl-list->string(reverse (list aiilst))))
  12.         )
  13.         (setq ss (ssget '((0 . "text"))))
  14.         (if ss
  15.                 (progn
  16.                         (setq num (sslength ss))
  17.                         (setq tsum 0 i 0)
  18.                         (while (< i num)
  19.                                 (setq str(cdr(assoc 1 (entget (ssname ss i)))))
  20.                                 (setq tha(lm-Str2ch str))
  21.                                 (if (= tha "") (setq tha "0"))
  22.                                 (setq tsum(+ tsum (atof tha)))
  23.                                 (setq i(1+ i))
  24.                                 (princ (strcat "\n" (itoa i) ":文本 <" str ">---数字 <" tha ">"))
  25.                         )
  26.                         (princ (strcat "\n共" (itoa i) "个文本,和=" (rtos tsum)))
  27.                 )
  28.         )
  29.         (princ)
  30. )
  31. (princ "\n文本数字求和(型如:钉23,钉23钉,钉23.12,-23.12,钉,多行文字先炸开,支持负数),命令:txtsum")
  32. (princ)

点评

很好用,非常感谢  发表于 2023-4-11 16:26
回复 支持 2 反对 0

使用道具 举报

发表于 2023-6-27 18:44:32 | 显示全部楼层

最后可以添加在指定位置放置文字,方便计算
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-16 22:55 , Processed in 0.166228 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表