明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3656|回复: 14

lisp求平均值的问题

[复制链接]
发表于 2006-8-6 15:17:00 | 显示全部楼层 |阅读模式
小弟刚接触二次开发,想在cad下实现框选一组数据求取平均值,用lisp实现,先谢谢了
发表于 2017-8-25 11:00:11 | 显示全部楼层
杨春平 发表于 2017-8-25 09:44
我把无痕的代码复制在txt文件,改为lsp还是不行唉

(defun c:pjz (/ ss lst n) (defun xss2lst (ss / i e lst)   (setq i -1)    (while (setq e(ssname ss (setq i (1+ i))))       (setq lst (cons e lst))   ) lst )   (if (setq ss (ssget '((0 . "*TEXT")(1 . "#*#"))))    (progn (foreach n (xss2lst ss)             (if (setq v (distof(cdr(assoc 1(entget n))))) (setq lst(cons v lst)))            )           (princ "\n 求和结果=")           (princ(/ (apply '+ lst)(length lst)))    )   )(princ) ) (princ "\n pjz = 求数字文本平均值.----by 无痕 2006.8")
复制这一段就可以了,再不行就仿照他的自己写,例子都给出来了。
发表于 2017-8-24 18:28:48 来自手机 | 显示全部楼层
杨春平 发表于 2017-8-24 17:03
大神,我不会二次开发,但是特别想用改该程序,是不是把代码复制到txt中,保存为lsp格式的就可以了?求指教 ...

06年的代码了,,可以复制在txt文件,改为lsp就可以用了。
发表于 2017-8-28 09:23:29 | 显示全部楼层
水吉空 发表于 2017-8-25 11:00
(defun c:pjz (/ ss lst n) (defun xss2lst (ss / i e lst)   (setq i -1)    (while (setq e(ssname ss  ...

好的,谢谢
发表于 2006-8-6 18:06:00 | 显示全部楼层

(defun ar-average (lst / n ll i);;求平均数函数
(setq n 0)
(setq ll 0.)
(setq i 0)
(setq n (length lst))
(repeat n
(setq ll (+ ll (abs (nth i lst))))
(setq i (1+ i))
)
(setq aver (/ ll n))
aver
)

EXP:
(setq lst (list 10. 20. 30. 40.))
(setq average (ar-average lst))
_$ 25.0

不知道是这样算的吗

 

有错的话请提供一下数学公式吧

发表于 2006-8-6 21:02:00 | 显示全部楼层
(defun C:test (/ ss idx lst aver)
  (if (setq ss (ssget '((0 . "*TEXT"))))
    (progn
      (setq idx 0)
      (while (<= idx (1- (sslength ss)))
 (if (numberp (read (cdr (assoc 1 (entget (ssname ss idx))))))
   (setq
     lst (cons (read (cdr (assoc 1 (entget (ssname ss idx)))))
        lst
  )
   )
 )
 (setq idx (1+ idx))
      )
      (if (> (length lst) 0)
 (progn
   (setq aver (/ (apply '+ lst) (length lst)))
   (alert (strcat (itoa (length lst))
    " number(s) selected.\nAverage: "
    (rtos aver 2 4)
   )
   )
 )
 (alert "No numder selected.")
      )
    )
    (alert "No numder selected.")
  )
)
发表于 2006-8-6 23:45:00 | 显示全部楼层
  1. ;; pjz = 求数字文本平均值.----by 无痕 2006.8
  2. (defun c:pjz (/ ss lst n)
  3. (defun xss2lst (ss / i e lst)
  4.   (setq i -1)
  5.    (while (setq e(ssname ss (setq i (1+ i))))
  6.       (setq lst (cons e lst))
  7.   ) lst
  8. )
  9.   (if (setq ss (ssget '((0 . "*TEXT")(1 . "#*#"))))
  10.    (progn (foreach n (xss2lst ss)
  11.             (if (setq v (distof(cdr(assoc 1(entget n))))) (setq lst(cons v lst)))
  12.            )
  13.           (princ "\n 求和结果=")
  14.           (princ(/ (apply '+ lst)(length lst)))
  15.    )
  16.   )(princ)
  17. )
  18. (princ "\n pjz = 求数字文本平均值.----by 无痕 2006.8")
发表于 2006-8-7 11:30:00 | 显示全部楼层

(defun c:pjz()
  (setq xzj (ssget))
  (setq sm (sslength xzj))
  (setq j 0)
  (setq i 0)
  (setq c 0)
  (repeat sm
    (setq ca (cdr(nth 1 (entget(ssname xzj j)))))
    (if (or (= ca "MTEXT") (= ca "TEXT"))
      (progn
 (if (atof(cdr (assoc 1 (entget(ssname xzj j)))))
   (progn
     (setq i (+ i 1))
     (setq sz (atof(cdr (assoc 1 (entget(ssname xzj j))))))
     (setq zs (+ sz c))
     (setq c zs)
     )
   )
 )
      )
    (setq j (+ j 1))
    )

  (setq pjs (/ zs i))
  (print "平均数是:" )
   pjs
  )

 楼主| 发表于 2006-8-8 11:47:00 | 显示全部楼层

太感谢楼上的各位了,谢谢!!

 楼主| 发表于 2006-8-8 11:56:00 | 显示全部楼层
经过测试,由无痕兄所写的代码简洁,且能够实现,再次向热心的朋友表示感谢
发表于 2017-8-24 16:57:21 | 显示全部楼层
求大神分享CAD求平均值的程序?
发表于 2017-8-24 17:03:01 | 显示全部楼层
大神,我不会二次开发,但是特别想用改该程序,是不是把代码复制到txt中,保存为lsp格式的就可以了?求指教
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-29 07:16 , Processed in 0.194122 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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