mojoer 发表于 2006-8-6 15:17:00

lisp求平均值的问题

小弟刚接触二次开发,想在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...

好的,谢谢

vken7az2p 发表于 2006-8-6 18:06:00

<P>(defun ar-average (lst / n ll i);;求平均数函数<BR>(setq n 0)<BR>(setq ll 0.)<BR>(setq i 0)<BR>(setq n (length lst))<BR>(repeat n<BR>(setq ll (+ ll (abs (nth i lst))))<BR>(setq i (1+ i))<BR>)<BR>(setq aver (/ ll n))<BR>aver<BR>)</P>
<P>EXP:<BR>(setq lst (list 10. 20. 30. 40.))<BR>(setq average (ar-average lst))<BR>_$ 25.0<BR></P>
<P>不知道是这样算的吗</P>
<P>&nbsp;</P>
<P>有错的话请提供一下数学公式吧</P>

alin 发表于 2006-8-6 21:02:00

(defun C:test (/ ss idx lst aver)<BR>&nbsp; (if (setq ss (ssget '((0 . "*TEXT"))))<BR>&nbsp;&nbsp;&nbsp; (progn<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq idx 0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (while (&lt;= idx (1- (sslength ss)))<BR>&nbsp;(if (numberp (read (cdr (assoc 1 (entget (ssname ss idx))))))<BR>&nbsp;&nbsp; (setq<BR>&nbsp;&nbsp;&nbsp;&nbsp; lst&nbsp;(cons (read (cdr (assoc 1 (entget (ssname ss idx)))))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lst<BR>&nbsp;&nbsp;)<BR>&nbsp;&nbsp; )<BR>&nbsp;)<BR>&nbsp;(setq idx (1+ idx))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (&gt; (length lst) 0)<BR>&nbsp;(progn<BR>&nbsp;&nbsp; (setq aver (/ (apply '+ lst) (length lst)))<BR>&nbsp;&nbsp; (alert (strcat (itoa (length lst))<BR>&nbsp;&nbsp;&nbsp; " number(s) selected.\nAverage: "<BR>&nbsp;&nbsp;&nbsp; (rtos aver 2 4)<BR>&nbsp;&nbsp; )<BR>&nbsp;&nbsp; )<BR>&nbsp;)<BR>&nbsp;(alert "No numder selected.")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp; (alert "No numder selected.")<BR>&nbsp; )<BR>)

无痕 发表于 2006-8-6 23:45:00

;; pjz = 求数字文本平均值.----by 无痕 2006.8
(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")

laoxie_198 发表于 2006-8-7 11:30:00

<P>(defun c:pjz()<BR>&nbsp; (setq xzj (ssget))<BR>&nbsp; (setq sm (sslength xzj))<BR>&nbsp; (setq j 0)<BR>&nbsp; (setq i 0)<BR>&nbsp; (setq c 0)<BR>&nbsp; (repeat sm<BR>&nbsp;&nbsp;&nbsp; (setq ca (cdr(nth 1 (entget(ssname xzj j)))))<BR>&nbsp;&nbsp;&nbsp; (if (or (= ca "MTEXT") (= ca "TEXT"))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<BR>&nbsp;(if (atof(cdr (assoc 1 (entget(ssname xzj j)))))<BR>&nbsp;&nbsp; (progn<BR>&nbsp;&nbsp;&nbsp;&nbsp; (setq i (+ i 1))<BR>&nbsp;&nbsp;&nbsp;&nbsp; (setq sz (atof(cdr (assoc 1 (entget(ssname xzj j))))))<BR>&nbsp;&nbsp;&nbsp;&nbsp; (setq zs (+ sz c))<BR>&nbsp;&nbsp;&nbsp;&nbsp; (setq c zs)<BR>&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp; )<BR>&nbsp;)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp; (setq j (+ j 1))<BR>&nbsp;&nbsp;&nbsp; )</P>
<P>&nbsp; (setq pjs (/ zs i))<BR>&nbsp; (print "平均数是:" )<BR>&nbsp;&nbsp; pjs<BR>&nbsp; )</P>

mojoer 发表于 2006-8-8 11:47:00

<P>太感谢楼上的各位了,谢谢!!</P>

mojoer 发表于 2006-8-8 11:56:00

经过测试,由无痕兄所写的代码简洁,且能够实现,再次向热心的朋友表示感谢

杨春平 发表于 2017-8-24 16:57:21

求大神分享CAD求平均值的程序?

杨春平 发表于 2017-8-24 17:03:01

大神,我不会二次开发,但是特别想用改该程序,是不是把代码复制到txt中,保存为lsp格式的就可以了?求指教
页: [1] 2
查看完整版本: lisp求平均值的问题