明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4376|回复: 13

字符串统计个数问题

  [复制链接]
发表于 2007-9-10 10:45:00 | 显示全部楼层 |阅读模式

各位大侠:

     在CAD里 怎样用LSP统计相同字符串的个数呢

E:\AA\3\TXT.JPG
发表于 2007-9-10 12:42:00 | 显示全部楼层
练练手..
  1. (defun c:tt (/ DATA ENAME K SS STR V1 V0)
  2.   (if (setq ss (ssget "X" '((0 . "*TEXT"))))
  3.     (progn
  4.       (setq str (getstring "\n>>>输入字符串或<回车选择>:"))
  5.       (if (and (= str "")
  6.         (setq ename (car (entsel "\r>>>请单选需要统计的源字符串:")))
  7.         (setq data (entget ename))
  8.         (setq v1 (cdr (assoc 1 data)))
  9.         (setq v0 (cdr (assoc 0 data)))
  10.         (wcmatch v0 "*TEXT")
  11.    )
  12. (setq str v1)
  13.       )
  14.       (setq i 0
  15.      k 0
  16.       )
  17.       (repeat (sslength ss)
  18. (setq ename (ssname ss i))
  19. (setq data (entget ename))
  20. (setq v1 (cdr (assoc 1 data)))
  21. (if (= v1 str)
  22.    (if (= k 0)
  23.      (setq k 1)
  24.      (setq k (1+ k))
  25.    )
  26. )
  27. (setq i (1+ i))
  28.       )
  29.       (princ
  30. (strcat "\r>>>图形中存在字符串<" str ">总的个数为:" (itoa k))
  31.       )
  32.     )
  33.     (princ "\r>>>图形中不存在字符串...")
  34.   )
  35.   (princ)
  36. )
发表于 2007-9-10 13:13:00 | 显示全部楼层

(sslength (ssget (list (cons 0 "*TEXT")(cons 1 (getstring "\n 输入字符串:")))))

发表于 2007-9-10 13:28:00 | 显示全部楼层
楼上的代码改动如下:
  1. ;;统计图形中内容相通的文本
  2. (defun C:TT (/ SS LST I STR TMP)
  3. &#160;&#160;&#160; (if&#160;&#160;&#160; (setq SS (ssget "X" '((0 . "*TEXT"))))
  4. &#160;&#160;&#160; (progn
  5. &#160;&#160;&#160; &#160;&#160;&#160; ;;统计数量
  6. &#160;&#160;&#160; &#160;&#160;&#160; (setq LST '()
  7. &#160;&#160;&#160; &#160;&#160;&#160; &#160; I&#160;&#160; 0
  8. &#160;&#160;&#160; &#160;&#160;&#160; )
  9. &#160;&#160;&#160; &#160;&#160;&#160; (repeat (sslength SS)
  10. &#160;&#160;&#160; &#160;&#160;&#160; (setq STR (cdr (assoc 1 (entget (ssname SS I)))))
  11. &#160;&#160;&#160; &#160;&#160;&#160; (if (setq TMP (assoc STR LST))
  12. &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; (setq LST (subst (list STR (1+ (cadr TMP)))
  13. &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160;&#160; TMP
  14. &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160;&#160; LST
  15. &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160; )
  16. &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; )
  17. &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; (setq LST (cons (list STR 1) LST))
  18. &#160;&#160;&#160; &#160;&#160;&#160; )
  19. &#160;&#160;&#160; &#160;&#160;&#160; (setq I (1+ I))
  20. &#160;&#160;&#160; &#160;&#160;&#160; )
  21. &#160;&#160;&#160; &#160;&#160;&#160; ;;输出结果
  22. &#160;&#160;&#160; &#160;&#160;&#160; (foreach TMP LST
  23. &#160;&#160;&#160; &#160;&#160;&#160; (if (= (cadr TMP) 1)
  24. &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; ()
  25. &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; (princ
  26. &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; (strcat&#160;&#160;&#160; "\n内容: "
  27. &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; STR
  28. &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; " 个数为: "
  29. &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; (itoa (cadr TMP))
  30. &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; )
  31. &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; )
  32. &#160;&#160;&#160; &#160;&#160;&#160; )
  33. &#160;&#160;&#160; &#160;&#160;&#160; )
  34. &#160;&#160;&#160; ) ;_结束progn
  35. &#160;&#160;&#160; (princ "\n图形中不存在文本对象。")
  36. &#160;&#160;&#160; ) ;_结束if
  37. &#160;&#160;&#160; (princ)
  38. ) ;_结束defun
 楼主| 发表于 2007-9-10 14:09:00 | 显示全部楼层

首先感谢各位大侠!

ZML84大侠的程序我作了调试,但统计不是很正确.见下图

E:\AA\3\A.JPG 各位大侠,程序能否改进一下,加个序号(即分出有多少种字符串),还有就是用序号替换原来的字符串,(见下图,上面部分为要统计的字符串,下面部分为统计出的结果) e:\aa\3\b.jpg 谢谢各位了
发表于 2007-9-10 15:12:00 | 显示全部楼层

楼主其实可以用FILTER跟find

计划赶不上变化...

发表于 2007-9-10 15:25:00 | 显示全部楼层
楼主的图片根本没有传上来。请确认
 楼主| 发表于 2007-9-10 17:43:00 | 显示全部楼层

接上7楼

 

 

本帖子中包含更多资源

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

x
发表于 2007-9-11 08:50:00 | 显示全部楼层
  1. ;;统计图形中的文本个数
  2. (defun C:TT (/ SS LST I STR TMP)
  3. &#160;&#160;&#160; (if&#160;&#160;&#160; (setq SS (ssget "X" '((0 . "*TEXT"))))
  4. &#160;&#160;&#160; (progn
  5. &#160;&#160;&#160; &#160;&#160;&#160; ;;统计数量
  6. &#160;&#160;&#160; &#160;&#160;&#160; (setq LST '()
  7. &#160;&#160;&#160; &#160;&#160;&#160; &#160; I&#160;&#160; 0
  8. &#160;&#160;&#160; &#160;&#160;&#160; )
  9. &#160;&#160;&#160; &#160;&#160;&#160; (repeat (sslength SS)
  10. &#160;&#160;&#160; &#160;&#160;&#160; (setq STR (cdr (assoc 1 (entget (ssname SS I)))))
  11. &#160;&#160;&#160; &#160;&#160;&#160; (if (setq TMP (assoc STR LST))
  12. &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; (setq LST (subst (list STR (1+ (cadr TMP)))
  13. &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160;&#160; TMP
  14. &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160;&#160; LST
  15. &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160; )
  16. &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; )
  17. &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; (setq LST (cons (list STR 1) LST))
  18. &#160;&#160;&#160; &#160;&#160;&#160; )
  19. &#160;&#160;&#160; &#160;&#160;&#160; (setq I (1+ I))
  20. &#160;&#160;&#160; &#160;&#160;&#160; )
  21. &#160;&#160;&#160; &#160;&#160;&#160; ;;输出结果
  22. &#160;&#160;&#160; &#160;&#160;&#160; (foreach TMP LST
  23. ;;;&#160;&#160;&#160; &#160;&#160;&#160; (if (= (cadr TMP) 1)
  24. ;;;&#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; ()
  25. &#160;&#160;&#160; &#160;&#160;&#160; (princ
  26. &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; (strcat "\n内容: "
  27. &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; (car TMP)
  28. &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; " 个数为: "
  29. &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; (itoa (cadr TMP))
  30. &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; )
  31. &#160;&#160;&#160; &#160;&#160;&#160; )
  32. ;;;&#160;&#160;&#160; &#160;&#160;&#160; )
  33. &#160;&#160;&#160; &#160;&#160;&#160; )
  34. &#160;&#160;&#160; ) ;_结束progn
  35. &#160;&#160;&#160; (princ "\n图形中不存在文本对象。")
  36. &#160;&#160;&#160; ) ;_结束if
  37. &#160;&#160;&#160; (princ)
  38. ) ;_结束defun
 楼主| 发表于 2007-9-11 19:24:00 | 显示全部楼层
谢谢各位
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-15 02:17 , Processed in 0.479485 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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