明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 721|回复: 8

求各位大侠写一个 单行文本最后数字相加的程序。

[复制链接]
发表于 2019-12-30 14:49 | 显示全部楼层 |阅读模式
9明经币
各位大侠们,由于本人是机加工行业  年纪大了记忆力反应都不好,算账价格老是算错,被老板客户骂晕。求各位写一个程序。
程序作用  :  几个单行文本最后的数字相加
程序操作  :  1 输入命令      2 选择几个单行文本    3 显示算账结果
       显示的算账结果既可以显示在CAD提示栏  也可以插入单行文本到CAD指定位置
       A算账结果可以是一个总结果  B也可以是  23+45+32=100这样的文本结果,总之怎么容易怎么来。

总的意思就是以下文本最后的数字相加   得出一个整数或者小数的帐就可以:
合计: -- 人民币: 72.51 X4= 290.04
合计: -- 人民币: 69.36
单块板 30
侧割15
上面4行文本选择后  得出一个总价格 404.40     404.4     404 有小数无小数都可以

谢谢各位了   能写出这个程序估计也是一个大的挑战。

最佳答案

查看完整内容

我只是个搬运工,好用不好用不知道 (DEFUN C:jia1() (setq jd (getint "input 精度:")) (if (= jd nil) (setq jd 0)) (princ "\nselect object:") (setq s (ssget)) (setq n (sslength s)) (setq k 0 )(setq mm 0.0) (while (< k n) (setq name (ssname s k)) (setq a (entget name)) (setq t1 (assoc '0 a)) (setq t1 (cdr t1)) (if (= t1 "TEXT") (PROGN (setq t ...
发表于 2019-12-30 14:49 | 显示全部楼层
我只是个搬运工,好用不好用不知道
(DEFUN C:jia1()
(setq jd (getint "input 精度<0>:"))
(if (= jd nil) (setq jd 0))
(princ "\nselect object:")
(setq s (ssget))
(setq n (sslength s))
(setq k 0 )(setq mm 0.0)
(while (< k n)
      (setq name (ssname s k))
      (setq a (entget name))
      (setq t1 (assoc '0 a))
      (setq t1 (cdr t1))
      (if (= t1 "TEXT") (PROGN
          (setq tx (assoc '1 a))
          (setq tx (cdr tx))
          (setq tx (atof tx))
          (setq mm (+ tx mm))
         ))
      (if (= t1 "DIMENSION") (PROGN
          (setq tx (assoc '1 a))
          (setq tx (cdr tx))
          (if (and (/= tx "")(/= tx "<>"))(setq tx (atof tx)))
          (if (or (= tx "")(= tx "<>"))(progn
              (setq tx (assoc '42 a))
              (setq tx (cdr tx))
              ))
          (if (= k 0) (setq MM TX) (setq mm (+ tx mm)))
         ))
      (setq k (+ k 1))
)
(setq mm (rtos mm 2 jd))
(setq po (getpoint "input point----:"))
(command "text" po ""  "" mm)
)

点评

太好用了  发表于 2024-1-2 13:00
这个牛  发表于 2022-8-12 11:39
回复

使用道具 举报

发表于 2019-12-30 15:58 | 显示全部楼层
本帖最后由 xj6019 于 2019-12-30 16:03 编辑

我还是只是个搬运工,搬砖下苦力的,嘿嘿......
先凑合用着,不行就让大神给个更好用的,我也学学
(defun c:total (/ cmdmode sset ssl nsset temp ssl1 total)
  (if *error*
    quit
  )
  (setq cmdmode (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (prompt "\nSelect numbers to add: ")
  (setq sset (ssget))
  (if (null sset)
    (princ "\nError: Nothing selected!\n") ; 过滤出选中的“text”实体,并报告有多少“text”实体被选中。
    (progn
      (setq ssl (sslength sset))
      (setq nsset (ssadd))
      (while (> ssl 0)
        (setq temp (ssname sset (setq ssl (1- ssl))))
        (if (= (cdr (assoc 0 (entget temp))) "TEXT")
          (ssadd temp nsset)
        )
      )
      (setq ssl (sslength nsset))
      (print ssl)
      (princ "text entities are found.") ; 选出所有可转化为数的“TEXT”,并求和。
      (setq total 0)
      (setq ssl1 ssl)
      (while (> ssl 0)
        (setq temp (ssname nsset (setq ssl (1- ssl))))
        (setq number (atof (cdr (assoc 1 (entget temp)))))
        (if (= 0 number)
          (setq ssl1 (1- ssl1))
          (setq total (+ total number))
        )
      )                                       ; 显示和及加数的个数,便于用户检查是否多选或漏选。
      (princ "\nThe total is ")
      (princ total)
      (princ "of the ")
      (princ ssl1)
      (princ "numbers\n")
    )
  )

  (setvar "CMDECHO" cmdmode)
)

(princ "\n\tc:total loaded. Start command with total.")



回复

使用道具 举报

 楼主| 发表于 2019-12-30 20:22 | 显示全部楼层
各位朋友们  这个问题已经完美解决  论坛里面的 ( 叮咚 )先生已经帮我写好了    速度很快   我们交流了好久  他还是很耐心的帮我解决问题。他是付费开发插件代码的    这是他的QQ 1020952830  
楼上回复我的朋友  贴的代码不能用  。

点评

这样弄的我都老不好意思了,又专门从论坛给你找了个你试试,可能这个你能用,不过不是源码,地址在下::http://bbs.mjtd.com/thread-178477-2-1.html 12楼 程序命令是MTT  发表于 2019-12-30 21:02
回复

使用道具 举报

发表于 2021-12-7 13:49 | 显示全部楼层
xj6019 发表于 2019-12-30 15:58
我还是只是个搬运工,搬砖下苦力的,嘿嘿......
先凑合用着,不行就让大神给个更好用的,我也学学
(defun ...

已经借用,谢谢分享!
回复

使用道具 举报

发表于 2022-5-5 23:15 来自手机 | 显示全部楼层
学习了,谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-4 09:00 , Processed in 0.307979 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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