明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6546|回复: 19

关于CAD图中文字统计程序!

  [复制链接]
发表于 2009-2-6 13:01:00 | 显示全部楼层 |阅读模式

不知道谁有这方面的LISP,目的是选取CAD图中的文字并且统计,网上的大多都是有一个字符不一样就统计一种!

有没有(比方说:“A12,A45,A56,B78,B45,C65。。。。”等)可以指定需要选取的TEXT文字的前一个字母或者数字,分类汇总呢,就象CAD图中以“A”开头的TEXT有多少,“B”开头的有多少等等,不知道那位朋友有这样的程序可以提供给我!谢谢了!

发表于 2024-1-14 23:19:38 | 显示全部楼层
caiqs 发表于 2009-2-11 12:55
;;;师兄 QQ 361865648(defun c:test ()  (setq searchstr (getstring    &n ...

CAD中加载输入字符串之后提示错误
“错误: 参数类型错误: symbolp 46”
请问是怎么回事呢?
回复 支持 1 反对 0

使用道具 举报

发表于 2009-2-6 19:13:00 | 显示全部楼层
游客,本帖隐藏的内容需要发帖数高于 5 才可浏览,你当前发帖数只有 0
发表于 2009-2-7 11:09:00 | 显示全部楼层

(sslength (ssget "_X" '((0 . "TEXT") (1 . "A#"))))

 楼主| 发表于 2009-2-7 12:44:00 | 显示全部楼层
本帖最后由 作者 于 2009-2-7 12:48:42 编辑

zzxxqq斑竹的程序有问题,“参数太少“

不知道可不可以把选取的内容存成文本或者其他格式,比方说:

A1   2个

A2   5个

A14    7个

B1    6个

。。。。

最后有个合计:”A“开头的合计多少个

前一个是按A,B,C等顺序排序 A、B、C。。。后面的数字就是1,2,3。。。。排序

 请ZZXXQQ CAOYIN斑竹帮忙给写一个!

发表于 2009-2-7 13:58:00 | 显示全部楼层
本帖最后由 作者 于 2009-2-9 10:33:23 编辑

;;已经修改,只是 acad_strlsort 会把 A3  排在 A11后面

(defun C:TT (/ SS I STR I REL LST X RLST ILST)
  (if (setq SS (ssget '((0 . "TEXT") (1 . "@#*"))))
    (progn
      (repeat (setq I (sslength SS))
        (setq STR (cdr (assoc 1 (entget (ssname SS (setq I (1- I)))))))
        (if (setq REL (distof (substr str 2)))
          (setq LST (cons STR LST))
        )
      )
      (setq LST (acad_strlsort LST))
      (while (setq X (car LST))
        (setq LEN  (length LST)
              LST  (vl-remove X LST)
              RLST (append RLST (list (cons X (- LEN (length LST)))))
        )
      )
    )
  )
)

 楼主| 发表于 2009-2-9 10:00:00 | 显示全部楼层
本帖最后由 作者 于 2009-2-9 10:05:09 编辑

caoyin斑竹出现这样的情况!

(E1 . 17)
(F2 . 0)
(E2 . 10)
(E3 . 3)
(E4 . 2)
(E5 . 1)
(D5 . 19)
(D9 . 18)
(A9 . 124)
(E10 . 16)
(A10 . 247)
(E12 . 15)

怎么不是按字母按A,B,C的顺序排列呢?

比方说“

A1 共2个

A2 共4个

B5 共4个

1AJK   共8个

2SFGK   共10个

..............

分类合计如下

A开头的合计6个

B开头的合计4个

1开头的合计8个

等等

我让一个朋友帮我整了,她也是让她一个网上的朋友帮忙编辑的,我试了下不是太合理,能不能加个人为的选取和自动选取的选择,并且输出为TXT的文本格式

发表于 2009-2-9 11:07:00 | 显示全部楼层

;;5楼已经修改

;; 只能统计一个起首字母,多个统计程序有些烦
;; (("D3" . 1) ("D4" . 3))------> 1和3表示个数
(defun C:TT (/ SY SS I STR I REL LST X LEN RLST)
  (if (and (or (/= (setq SY (getstring "\n指定起首字母: ")) "")
               (setq SY nil)
           )
           (setq SY (strcase SY)
                 SS (ssget (list '(0 . "TEXT") (cons 1 (strcat SY "#*"))))
           )
      )
    (progn
      (repeat (setq I (sslength SS))
        (setq STR (cdr (assoc 1 (entget (ssname SS (setq I (1- I)))))))
        (if (setq REL (distof (substr str 2)))
          (setq LST (cons REL LST))
        )
      )
      (setq LST (vl-sort LST '>=))
      (while (setq X (car LST))
        (setq LEN  (length LST)
              LST  (vl-remove X LST)
              RLST (cons (cons (strcat SY (itoa (fix X))) (- LEN (length LST))) RLST)
        )
      )
    )
  )
)

 楼主| 发表于 2009-2-10 09:36:00 | 显示全部楼层
本帖最后由 作者 于 2009-2-10 9:38:57 编辑

caoyin斑竹 最好能象这样输出并且保存文本格式!

A10   10
A13   2
A14   2

 
B102   1
B103   16
B104   1
 
D5   1
D9   1
 
1AU   1
1AY   18
1AZ   19
1B   3

2   4
2AA   1
2AB   12
2BA   1
2BB   3
 
3AS   4
3AV   1
3AX   2
 
分类合计如下:

A开头的合计 14个

B开头的合计 18个

D开头的合计 2个

1开头的合计 41个

2开头的合计 21个

3开头的合计 7个

 楼主| 发表于 2009-2-10 09:45:00 | 显示全部楼层
本帖最后由 作者 于 2009-2-10 15:17:11 编辑

caoyin斑竹!再麻烦你了!

输出的方式能象8楼我说的那样(因为如果数量多的话找起来不方便,如果能在最后写合计,那直接到TXT文本最后查看就很清晰了) 并且最好能给添加上手动选取和自动选取(因为毕竟不是每次都要对全图进行统计,有可能需要局部选取)!

 楼主| 发表于 2009-2-10 15:19:00 | 显示全部楼层
请caoyin斑竹帮忙啊!急用中!在此麻烦你了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 23:33 , Processed in 0.202957 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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