77077 发表于 2014-8-21 21:05:50

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

欢迎大家一起来拓展,嘿嘿~~~
(defun c:xx( / Layer sslst numlst num)
   (defun ss->EnLst (ss / retu)
       (setq retu (apply 'append (ssnamex ss)))
       (setq retu (vl-remove-if-not '(lambda (x) (= (type x) 'ENAME)) retu))
   )
(setq K (getint "\n 求和<1>,求积<2>,最大值<3>,最小值<4>"))
(setq sslst (ss->EnLst (ssget (list (cons 0 "TEXT") (cons 1 "~*[~`--9]*")))))
(setq numlst (mapcar '(lambda(x) (atof (cdr (assoc 1 (entget x))))) sslst))
(cond
      ((= K 1)(setq num (apply '+ numlst)))
      ((= K 2)(setq num (apply '* numlst)))
      ((= K 3)(setq num (apply 'max numlst)))
      ((= K 4)(setq num (apply 'min numlst)))
      (T (setq num (apply '+ numlst)))
)
(princ num)
(princ)
)

lml2023 发表于 2023-9-9 16:14:17


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

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

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

      (T (setq num (apply '+ numlst)))
)
(princ num)


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

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


(princ)
)




(princ)
(defun prin()
(princ "\n*************心雨编写2023-9,QQ12369867*************** ")
(princ)
)

lml2023 发表于 2023-9-9 16:12:29

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


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

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

      (T (setq num (apply '+ numlst)))
)
(princ num)


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

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


(princ)
)

红黄蓝3210 发表于 2023-6-2 23:18:12

xyp1964 发表于 2014-8-25 23:28
先来个效果:

院长方便发一下这个数字处理插件吗

77077 发表于 2014-8-21 21:08:56

不好意思,第一行多了个 Layer,原本我的程序有个图层过滤!

77077 发表于 2014-8-21 21:19:42

((= K 5)(setq num (/ (apply '+ numlst) (length numlst))));平均数

doro 发表于 2014-8-25 16:31:21

极值亮显出来才好啊

lucas_3333 发表于 2014-8-25 16:55:37

支持一下!
只支持单行文字,如果能支持单行,多行文字加上标注值,那样就good了

香田里浪人 发表于 2014-8-25 20:49:59

(setq insPt0 (getpoint "\n请输入计算结果插入点: "));;;计算结果显示在图中位置
(setq bb (strcat "计算结果="(rtos num )""))
(command "_text" insPt0 2 "" bb 0)

xyp1964 发表于 2014-8-25 23:28:38

先来个效果:

qyming 发表于 2014-8-26 21:41:07

改成框选怎么不成功?

hi-kit 发表于 2020-3-25 14:20:09

学习学习!
页: [1] 2
查看完整版本: 选数求和,求积,求最大值,最小值...........欢迎大家一起来拓展,嘿嘿~~~