关于CAD图中文字统计程序!
<p>不知道谁有这方面的LISP,目的是选取CAD图中的文字并且统计,网上的大多都是有一个字符不一样就统计一种!</p><p>有没有(比方说:“A12,A45,A56,B78,B45,C65。。。。”等)可以指定需要选取的TEXT文字的前一个字母或者数字,分类汇总呢,就象CAD图中以“A”开头的TEXT有多少,“B”开头的有多少等等,不知道那位朋友有这样的程序可以提供给我!谢谢了!</p> caiqs 发表于 2009-2-11 12:55;;;师兄 QQ 361865648(defun c:test () (setq searchstr (getstring &n ...
CAD中加载输入字符串之后提示错误
“错误: 参数类型错误: symbolp 46”
请问是怎么回事呢?
;以首字母显示所选范围字串数量 明经 ZZXXQQ 2009.2.6
(defun c:tt ()
(if (setq ss (ssget '((0 . "TEXT")))) (progn
(setq i 0 txtl (list))
(repeat (sslength ss)
(setq txt (substr (cdr(assoc 1 (entget(ssname ss i)))) 1 1)
i (1+ i))
(if (setq txl (assoc txt txtl))
(setq txtl (subst txl (cons txt (1+ (cdr txl))) txtl))
(setq txtl (cons (list txt 1)))
)
)
(setq i 0)
(repeat (length txtl)
(princ (strcat "\n" (nth i txtl)))
(setq i (1+ i))
)
))
(princ)
)
<p>(sslength (ssget "_X" '((0 . "TEXT") (1 . "A#"))))</p> 本帖最后由 作者 于 2009-2-7 12:48:42 编辑 <br /><br /> <p>zzxxqq斑竹的程序有问题,“参数太少“</p><p>不知道可不可以把选取的内容存成文本或者其他格式,比方说:</p><p>A1 2个</p><p>A2 5个</p><p>A14 7个</p><p>B1 6个</p><p>。。。。</p><p>最后有个合计:”A“开头的合计多少个</p><p>前一个是按A,B,C等顺序排序 A、B、C。。。后面的数字就是1,2,3。。。。排序</p><p> 请ZZXXQQ CAOYIN斑竹帮忙给写一个!</p><p></p> 本帖最后由 作者 于 2009-2-9 10:33:23 编辑 <br /><br /> <p>;;已经修改,只是 acad_strlsort 会把 A3 排在 A11后面</p><p>(defun C:TT (/ SS I STR I REL LST X RLST ILST)<br/> (if (setq SS (ssget '((0 . "TEXT") (1 . "@#*"))))<br/> (progn<br/> (repeat (setq I (sslength SS))<br/> (setq STR (cdr (assoc 1 (entget (ssname SS (setq I (1- I)))))))<br/> (if (setq REL (distof (substr str 2)))<br/> (setq LST (cons STR LST))<br/> )<br/> )<br/> (setq LST (acad_strlsort LST))<br/> (while (setq X (car LST))<br/> (setq LEN (length LST)<br/> LST (vl-remove X LST)<br/> RLST (append RLST (list (cons X (- LEN (length LST)))))<br/> )<br/> )<br/> )<br/> )<br/>)</p><p></p> 本帖最后由 作者 于 2009-2-9 10:05:09 编辑 <br /><br /> <p>caoyin斑竹出现这样的情况!</p><p>(E1 . 17)<br/>(F2 . 0)<br/>(E2 . 10)<br/>(E3 . 3)<br/>(E4 . 2)<br/>(E5 . 1)<br/>(D5 . 19)<br/>(D9 . 18)<br/>(A9 . 124)<br/>(E10 . 16)<br/>(A10 . 247)<br/>(E12 . 15)</p><p>怎么不是按字母按A,B,C的顺序排列呢?</p><p>比方说“</p><p>A1 共2个</p><p>A2 共4个</p><p>B5 共4个</p><p>1AJK 共8个</p><p>2SFGK 共10个</p><p>..............</p><p>分类合计如下</p><p>A开头的合计6个</p><p>B开头的合计4个</p><p>1开头的合计8个</p><p>等等</p><p>我让一个朋友帮我整了,她也是让她一个网上的朋友帮忙编辑的,我试了下不是太合理,能不能加个人为的选取和自动选取的选择,并且输出为TXT的文本格式</p> <p>;;5楼已经修改</p><p>;; 只能统计一个起首字母,多个统计程序有些烦<br/>;; (("D3" . 1) ("D4" . 3))------> 1和3表示个数<br/>(defun C:TT (/ SY SS I STR I REL LST X LEN RLST)<br/> (if (and (or (/= (setq SY (getstring "\n指定起首字母: ")) "")<br/> (setq SY nil)<br/> )<br/> (setq SY (strcase SY)<br/> SS (ssget (list '(0 . "TEXT") (cons 1 (strcat SY "#*"))))<br/> )<br/> )<br/> (progn<br/> (repeat (setq I (sslength SS))<br/> (setq STR (cdr (assoc 1 (entget (ssname SS (setq I (1- I)))))))<br/> (if (setq REL (distof (substr str 2)))<br/> (setq LST (cons REL LST))<br/> )<br/> )<br/> (setq LST (vl-sort LST '>=))<br/> (while (setq X (car LST))<br/> (setq LEN (length LST)<br/> LST (vl-remove X LST)<br/> RLST (cons (cons (strcat SY (itoa (fix X))) (- LEN (length LST))) RLST)<br/> )<br/> )<br/> )<br/> )<br/>)</p> 本帖最后由 作者 于 2009-2-10 9:38:57 编辑 <br /><br /> <p>caoyin斑竹 最好能象这样输出并且保存文本格式!</p><p>A10 10<br/>A13 2<br/>A14 2</p><p> <br/>B102 1<br/>B103 16<br/>B104 1<br/> <br/>D5 1<br/>D9 1<br/> <br/>1AU 1<br/>1AY 18<br/>1AZ 19<br/>1B 3</p><p>2 4<br/>2AA 1<br/>2AB 12<br/>2BA 1<br/>2BB 3<br/> <br/>3AS 4<br/>3AV 1<br/>3AX 2<br/> <br/>分类合计如下:</p><p>A开头的合计 14个</p><p>B开头的合计 18个</p><p>D开头的合计 2个</p><p>1开头的合计 41个</p><p>2开头的合计 21个</p><p>3开头的合计 7个</p> 本帖最后由 作者 于 2009-2-10 15:17:11 编辑 <br /><br /> <p>caoyin斑竹!再麻烦你了!</p><p>输出的方式能象8楼我说的那样(因为如果数量多的话找起来不方便,如果能在最后写合计,那直接到TXT文本最后查看就很清晰了) 并且最好能给添加上手动选取和自动选取(因为毕竟不是每次都要对全图进行统计,有可能需要局部选取)!</p><p></p> 请caoyin斑竹帮忙啊!急用中!在此麻烦你了!
页:
[1]
2