明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1146|回复: 3

水果总量统计

[复制链接]
发表于 2015-9-7 15:59:04 | 显示全部楼层 |阅读模式
  1. (defun zkwb (shiming / shibiao wengben0 wengben bbb chang wenglist list1 i)   ;炸开文本
  2. (command "undo" "be")
  3.          (setq shibiao (entget shiming))
  4.    (setq wengben0 (assoc 1 shibiao))
  5.    (setq wengben (cdr wengben0))
  6.    (setq bbb nil chang (strlen wengben))
  7.    (setq i 1)
  8.    (setq wenglist nil)
  9.    (while (< i chang)
  10.           (setq wengge (substr wengben i 2))
  11.           (setq wenglist (append wenglist (list wengge)))
  12.           (setq i (+ i 2))
  13.    )
  14.   (setq list1 "")
  15.   ;得到文本列表wenglist
  16.   (foreach x wenglist
  17.     (if (and  (>= (ascii x) 45) (<=  (ascii x) 59))
  18.       (setq list1 (strcat list1 x))
  19.       )   
  20.     ) (princ)
  21.   (atof list1)
  22. )
  23. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  24. (defun c:tt11 ( / lst ent pts pt demj zmj i) ;求平均数
  25. (setq lst (ssget '((0 . "text,mtext") (1 . "*[0-9]*")   )   )  )
  26.   
  27. (setq i 0)
  28. (setq zmj 0.000)
  29.   
  30. (while  (< i (sslength lst))

  31. (setq ent (ssname lst i))


  32. (setq demj (zkwb ent))
  33.   

  34.   ;(setq demj (atof(cdr (assoc 1 (entget ent)))))
  35.   
  36.   

  37.   
  38.   
  39.   
  40. (setq zmj(+ zmj demj))

  41. (setq i (+ i 1))
  42.   
  43.   
  44.   )
  45. (entmake (list (cons 0  "TEXT") (cons 1 (strcat "总和"(rtos zmj 2 3) "平均数" (rtos (/ zmj i) 2 3) )) (cons 10 (getpoint "\请输入总和插入点"))
  46.                (cons 40 3)
  47.                (cons 8 "总和")
  48.                ))
  49. (print zmj)
  50.   (print (/ zmj i))
  51.   (princ)

  52. )

本帖子中包含更多资源

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

x
 楼主| 发表于 2015-9-7 22:57:20 | 显示全部楼层

  1. ;;--------------------------------------------主函数----------------------------------------------------;;
  2. (defun xxexp (pat str key / end)
  3.   ;(princ "\n ★"一刀屠文"(xxexp)(xxexpr) = 对字符串进行正则表达式测试及替换-by 梁雄啸.2007.7")
  4.   (vl-load-com)
  5.   (if (not *xxvbsexp)
  6.     (setq *xxvbsexp (vlax-get-or-create-object "VBScript.RegExp"))
  7.   )
  8.   (vlax-put *xxvbsexp 'Pattern pat)
  9.   (if (not key)(setq key ""))  
  10.   (setq key (strcase key))
  11.   (setq keys '(("I"  "IgnoreCase")("G"  "Global")("M"  "Multiline")))
  12.   (mapcar '(lambda(x)
  13.        (if (wcmatch key (strcat "*" (car x) "*"))
  14.          (vlax-put *xxvbsexp (read(cadr x)) 0)
  15.          (vlax-put *xxvbsexp (read(cadr x)) -1)
  16.          ))
  17.     keys)
  18.   (setq matches (vlax-invoke *xxvbsexp 'Execute str))
  19.   (vlax-for x matches (setq end (cons (vla-get-value x) end)))
  20.   (reverse end)
  21. )
  22. ;;--------------------------------------------end----------------------------------------------------;;
  23. ;;--------------------------------------------主函数----------------------------------------------------;;
  24. ;; 用正则表达式替换字符
  25. (defun xxexpr (pat str nstr key / end)
  26.   ;(princ "\n ★"一刀屠文"(xxexp)(xxexpr) = 对字符串进行正则表达式测试及替换-by 梁雄啸.2007.7")
  27.   (vl-load-com)
  28.   (if (not *xxvbsexp)
  29.     (setq *xxvbsexp (vlax-get-or-create-object "VBScript.RegExp"))
  30.   )
  31.   (vlax-put *xxvbsexp 'Pattern pat)
  32.   (if (not key)(setq key ""))
  33.   (setq key (strcase key))
  34.   (setq keys '(("I"  "IgnoreCase")("G"  "Global")("M"  "Multiline")))
  35.   (mapcar '(lambda(x)
  36.        (if (wcmatch key (strcat "*" (car x) "*"))
  37.          (vlax-put *xxvbsexp (read(cadr x)) 0)
  38.          (vlax-put *xxvbsexp (read(cadr x)) -1)
  39.          ))
  40.     keys)
  41.   (vlax-invoke *xxvbsexp 'replace str nstr)  
  42. )
  43. (defun c:xxexphlp()
  44.   (alert
  45.     "------------------"一刀屠文" = 对字符串进行正则表达式测试及替换--------------------
  46. ------------------------------------by 梁雄啸.2007.7-------------------------------
  47. 函数:(xxexp pat str key)
  48. 功能 对字符串进行正则表达式匹配测试.
  49. 参数: pat = 正则表达式模式 ,对应vbs正则表达式的模式(expression)。说明: \\号要用\\\\替代.
  50.      str = 字符串
  51.      key = "i" "g" "m" , "i"不区分大小写(Ignorecase),"g"全局匹配(Global).
  52.            "m"多行模式(Multiline),以上几个关键字可以组合使用,或用 "".
  53. 返回: 返回匹配的字符列表,或无一匹配返回nil

  54. 函数:(xxexpr pat str nstr key)
  55. 功能 对字符串进行正则表达式替换.
  56. 参数: pat = 同xxexp
  57.      str = 被替换字符串
  58.      nstr = 替换字符串
  59.      key = 同xxexp
  60. 返回 :返回替换后的字符串.
  61.     "
  62.    )
  63. )


  64. (princ)
  65. ;;--------------------------------------------end----------------------------------------------------;;
  66. (defun zkwb (shiming / shibiao wengben0 wengben bbb chang wenglist list1 i pat)   ;炸开文本
  67. (command "undo" "be")
  68.          (setq shibiao (entget shiming))
  69.    (setq wengben0 (assoc 1 shibiao))
  70.    (setq wengben (cdr wengben0))
  71.   
  72.   
  73. (setq pat "[+|-]?\\d*\\.?\\d+(e[+|-]*\\d+)*")
  74. (setq wenglist (xxexp pat wengben ""))
  75.   
  76.   ;得到文本列表wenglist
  77.    (princ)
  78.   (read  (car wenglist))
  79. )
  80. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  81. (defun c:tt11 ( / lst ent pts pt demj zmj i) ;求平均数
  82. (setq lst (ssget '((0 . "text,mtext") (1 . "*[0-9]*")   )   )  )
  83.   
  84. (setq i 0)
  85. (setq zmj 0.000)
  86.   
  87. (while  (< i (sslength lst))

  88. (setq ent (ssname lst i))


  89. (setq demj (zkwb ent))
  90.   

  91.   ;(setq demj (atof(cdr (assoc 1 (entget ent)))))
  92.   
  93.   

  94.   
  95.   
  96.   
  97. (setq zmj(+ zmj demj))

  98. (setq i (+ i 1))
  99.   
  100.   
  101.   )
  102. (entmake (list (cons 0  "TEXT") (cons 1 (strcat "总和"(rtos zmj 2 3) "平均数" (rtos (/ zmj i) 2 3) )) (cons 10 (getpoint "\请输入总和插入点"))
  103.                (cons 40 3)
  104.                (cons 8 "总和")
  105.                ))
  106. (print zmj)
  107.   (print (/ zmj i))
  108.   (princ)

  109. )
发表于 2018-5-11 10:46:32 | 显示全部楼层
效果不错啊
发表于 2018-5-12 09:25:03 | 显示全部楼层
感谢楼主分享!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-23 09:00 , Processed in 0.155283 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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