求各位大侠写一个 单行文本最后数字相加的程序。
各位大侠们,由于本人是机加工行业年纪大了记忆力反应都不好,算账价格老是算错,被老板客户骂晕。求各位写一个程序。程序作用:几个单行文本最后的数字相加
程序操作: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 精度<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)
)
本帖最后由 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.")
各位朋友们这个问题已经完美解决论坛里面的 ( 叮咚 )先生已经帮我写好了 速度很快 我们交流了好久他还是很耐心的帮我解决问题。他是付费开发插件代码的 这是他的QQ 1020952830
楼上回复我的朋友贴的代码不能用。 xj6019 发表于 2019-12-30 15:58
我还是只是个搬运工,搬砖下苦力的,嘿嘿......
先凑合用着,不行就让大神给个更好用的,我也学学
(defun ...
已经借用,谢谢分享! 学习了,谢谢分享
页:
[1]