明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2809|回复: 11

[源码] 选数求和,求积,求最大值,最小值...........欢迎大家一起来拓展,嘿嘿~~~

[复制链接]
发表于 2014-8-21 21:05 | 显示全部楼层 |阅读模式
欢迎大家一起来拓展,嘿嘿~~~

  1. (defun c:xx( / Layer sslst numlst num)
  2.    (defun ss->EnLst (ss / retu)
  3.        (setq retu (apply 'append (ssnamex ss)))
  4.        (setq retu (vl-remove-if-not '(lambda (x) (= (type x) 'ENAME)) retu))
  5.    )
  6.   (setq K (getint "\n 求和<1>,求积<2>,最大值<3>,最小值<4>"))
  7.   (setq sslst (ss->EnLst (ssget (list (cons 0 "TEXT") (cons 1 "~*[~`--9]*")))))
  8.   (setq numlst (mapcar '(lambda(x) (atof (cdr (assoc 1 (entget x))))) sslst))
  9.   (cond
  10.       ((= K 1)(setq num (apply '+ numlst)))
  11.       ((= K 2)(setq num (apply '* numlst)))
  12.       ((= K 3)(setq num (apply 'max numlst)))
  13.       ((= K 4)(setq num (apply 'min numlst)))
  14.       (T (setq num (apply '+ numlst)))
  15.   )
  16.   (princ num)
  17.   (princ)
  18. )
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-9-9 16:14 | 显示全部楼层

我已经帮你们实现了求和,  (setq K (getint "\n 最大值<1>,最小值<2>,求和<3>,求差<4>,求积<5>,求商<6>,求平均值<7>"))
并且输出字高为300,红色字体

  1. ;4-求最值QB
  2. (defun c:QB( /  sslst numlst num)
  3.    (defun ss->EnLst (ss / retu)
  4.        (setq retu (apply 'append (ssnamex ss)))
  5.        (setq retu (vl-remove-if-not '(lambda (x) (= (type x) 'ENAME)) retu))
  6.    )
  7.   (setq K (getint "\n 最大值<1>,最小值<2>,求和<3>,求差<4>,求积<5>,求商<6>,求平均值<7>"))
  8.   (setq sslst (ss->EnLst (ssget (list (cons 0 "TEXT") (cons 1 "~*[~`--9]*")))))
  9.   (setq numlst (mapcar '(lambda(x) (atof (cdr (assoc 1 (entget x))))) sslst))
  10.   (cond

  11.       ((= K 1)(setq num (apply 'max numlst)));;求最大值
  12.       ((= K 2)(setq num (apply 'min numlst)));;求最小值
  13.       ((= K 3)(setq num (apply '+ numlst)))
  14.       ((= K 4)(setq num (apply '- numlst)))
  15.       ((= K 5)(setq num (apply '* numlst)))
  16.       ((= K 6)(setq num (apply '/ numlst)))
  17.       ((= K 7)(setq num (/ (apply '+ numlst) (length numlst))));;平均数

  18.       (T (setq num (apply '+ numlst)))
  19.   )
  20.   (princ num)


  21. (setq insPt0 (getpoint "\n请输入计算结果插入点: "));;;计算结果显示在图中位置
  22. (setq bb (strcat "Z="(rtos num 2 3  )""));;;rtos num 2 2中 表示输出第一个2表示输出十进制,如果是1就是科学计数,第二个2表示输出2位小数
  23. (command "_text"  insPt0  300    "" bb 0 );;;300字高

  24.   (setq textEnt (entlast))
  25.   (entmod (append (entget textEnt) '((62 . 1))));;;设置文本颜色为红色


  26. (princ)
  27. )




  28. (princ)
  29. (defun prin()
  30. (princ "\n*************心雨编写2023-9,QQ12369867*************** ")
  31. (princ)
  32. )

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2023-9-9 16:12 | 显示全部楼层
我已经帮你们实现了求和,  (setq K (getint "\n 最大值<1>,最小值<2>,求和<3>,求差<4>,求积<5>,求商<6>,求平均值<7>"))
并且输出字高为300,红色字体


  1. ;4-求最值QB
  2. (defun c:QB( /  sslst numlst num)
  3.    (defun ss->EnLst (ss / retu)
  4.        (setq retu (apply 'append (ssnamex ss)))
  5.        (setq retu (vl-remove-if-not '(lambda (x) (= (type x) 'ENAME)) retu))
  6.    )
  7.   (setq K (getint "\n 最大值<1>,最小值<2>,求和<3>,求差<4>,求积<5>,求商<6>,求平均值<7>"))
  8.   (setq sslst (ss->EnLst (ssget (list (cons 0 "TEXT") (cons 1 "~*[~`--9]*")))))
  9.   (setq numlst (mapcar '(lambda(x) (atof (cdr (assoc 1 (entget x))))) sslst))
  10.   (cond

  11.       ((= K 1)(setq num (apply 'max numlst)));;求最大值
  12.       ((= K 2)(setq num (apply 'min numlst)));;求最小值
  13.       ((= K 3)(setq num (apply '+ numlst)))
  14.       ((= K 4)(setq num (apply '- numlst)))
  15.       ((= K 5)(setq num (apply '* numlst)))
  16.       ((= K 6)(setq num (apply '/ numlst)))
  17.       ((= K 7)(setq num (/ (apply '+ numlst) (length numlst))));;平均数

  18.       (T (setq num (apply '+ numlst)))
  19.   )
  20.   (princ num)


  21. (setq insPt0 (getpoint "\n请输入计算结果插入点: "));;;计算结果显示在图中位置
  22. (setq bb (strcat "Z="(rtos num 2 3  )""));;;rtos num 2 2中 表示输出第一个2表示输出十进制,如果是1就是科学计数,第二个2表示输出2位小数
  23. (command "_text"  insPt0  300    "" bb 0 );;;300字高

  24.   (setq textEnt (entlast))
  25.   (entmod (append (entget textEnt) '((62 . 1))));;;设置文本颜色为红色


  26. (princ)
  27. )

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2023-6-2 23:18 | 显示全部楼层

院长方便发一下这个数字处理插件吗
 楼主| 发表于 2014-8-21 21:08 | 显示全部楼层
不好意思,第一行多了个 Layer,原本我的程序有个图层过滤!
 楼主| 发表于 2014-8-21 21:19 | 显示全部楼层
((= K 5)(setq num (/ (apply '+ numlst) (length numlst))));平均数
发表于 2014-8-25 16:31 | 显示全部楼层
极值亮显出来才好啊
发表于 2014-8-25 16:55 | 显示全部楼层
支持一下!
只支持单行文字,如果能支持单行,多行文字加上标注值,那样就good了
发表于 2014-8-25 20:49 | 显示全部楼层
(setq insPt0 (getpoint "\n请输入计算结果插入点: "));;;计算结果显示在图中位置
(setq bb (strcat "计算结果="(rtos num )""))
(command "_text" insPt0 2 "" bb 0)
发表于 2014-8-25 23:28 | 显示全部楼层
先来个效果:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2014-8-26 21:41 | 显示全部楼层
改成框选怎么不成功?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-18 19:44 , Processed in 0.286504 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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