明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1891|回复: 8

[讨论] 请教,能否给下面的程序新增一个框选的功能,谢谢!

[复制链接]
发表于 2013-4-26 11:53:54 | 显示全部楼层 |阅读模式
;;统计文字
(defun C:TT (/              TT-TEMP  LIST-SAME         FILE          FILENAME
             I              LEN      PRE_LIST        RETURN         SS          STR
             TEXT_LIST               X
            )
  (princ "\n统计文字并写入文本文档 ")
  (defun TT-TEMP (A B / RETURN I)
    (setq I -1)
    (repeat (+ (- B A) 1)
      (setq RETURN (cons (chr (+ A (setq I (1+ I)))) RETURN))
    )
    (reverse RETURN)
  )

  (defun LIST-SAME (LST / A LEN X RETURN)
    (while LST
      (setq A (car LST))
      (setq LEN (length LST))
      (setq LST (vl-remove-if '(lambda (X) (= A X)) LST))
      (setq RETURN (cons (list A (- LEN (length LST))) RETURN))
    )
    RETURN
  )

  (if (and (setq FILENAME (getfiled "选择保存的位置" "" "txt" 1))
           (setq PRE_LIST
                  (append (TT-TEMP 65 90)
                          (TT-TEMP 97 122)
                          (TT-TEMP 48 57)
                  )
           )
      )
    ;;(48 57)0-9
    ;;(65 90)A-Z
    ;;(97 122)a-z
    (progn
      (setq FILE (open FILENAME "w"))
      (close FILE)
      (foreach PRE PRE_LIST
        (if (setq SS
                   (ssget "x"
                          (list (cons 0 "TEXT") (cons 1 (strcat PRE "*")))
                   )
            )
          (progn

            (setq TEXT_LIST NIL
                  TOTAL        NIL
            )
            (repeat (setq I (sslength SS))
              (setq
                TEXT_LIST
                 (cons
                   (cdr        (assoc 1 (entget (ssname SS (setq I (1- I)))))
                   )
                   TEXT_LIST
                 )
              )
            )

            (setq TEXT_LIST (vl-sort TEXT_LIST '>))
            (setq RETURN (LIST-SAME TEXT_LIST))
            (foreach X RETURN
              (setq TOTAL (cons (cadr X) TOTAL))
            )

            (setq ALL (apply '+ TOTAL))

            (setq FILE (open FILENAME "a"))
            (mapcar '(lambda (X)
                       (setq STR (strcat (car X) "   " (itoa (cadr X))))
                       (write-line STR FILE)
                     )
                    RETURN
            )
            (write-line (strcat PRE "开头合计" (itoa ALL)) FILE)
            (write-line " " FILE)
            (close FILE)
          )
        )
      )
      (startapp "notepad.exe" FILENAME)
    )
  )
  (princ)
)
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2013-4-26 12:13:25 | 显示全部楼层
(setq SS (ssget "x" (list (cons 0 "TEXT") (cons 1 (strcat PRE "*")))))
===>
(setq SS (ssget (list (cons 0 "TEXT") (cons 1 (strcat PRE "*")))))
 楼主| 发表于 2013-4-26 12:30:12 | 显示全部楼层
可以框选对象了,但选择不了,详见附图

本帖子中包含更多资源

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

x
发表于 2013-4-26 13:53:12 | 显示全部楼层
Try This one ...

本帖子中包含更多资源

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

x
 楼主| 发表于 2013-4-26 13:56:47 | 显示全部楼层
有框选的功能,但选择不了对象
;;统计文字
(defun C:TT (/              TT-TEMP  LIST-SAME         FILE          FILENAME
              I              LEN      PRE_LIST        RETURN         SS          STR
              TEXT_LIST               X
             )
   (princ "\n统计文字并写入文本文档 ")
   (defun TT-TEMP (A B / RETURN I)
     (setq I -1)
     (repeat (+ (- B A) 1)
       (setq RETURN (cons (chr (+ A (setq I (1+ I)))) RETURN))
     )
     (reverse RETURN)
   )

  (defun LIST-SAME (LST / A LEN X RETURN)
     (while LST
       (setq A (car LST))
       (setq LEN (length LST))
       (setq LST (vl-remove-if '(lambda (X) (= A X)) LST))
       (setq RETURN (cons (list A (- LEN (length LST))) RETURN))
     )
     RETURN
   )

  (if (and (setq FILENAME (getfiled "选择保存的位置" "" "txt" 1))
            (setq PRE_LIST
                   (append (TT-TEMP 65 90)
                           (TT-TEMP 97 122)
                           (TT-TEMP 48 57)
                   )
            )
       )
     ;;(48 57)0-9
     ;;(65 90)A-Z
     ;;(97 122)a-z
     (progn
       (setq FILE (open FILENAME "w"))
       (close FILE)
       (foreach PRE PRE_LIST
         (if (setq SS
                    (ssget
                           (list (cons 0 "TEXT") (cons 1 (strcat PRE "*")))
                    )
             )
           (progn

            (setq TEXT_LIST NIL
                   TOTAL        NIL
             )
             (repeat (setq I (sslength SS))
               (setq
                 TEXT_LIST
                  (cons
                    (cdr        (assoc 1 (entget (ssname SS (setq I (1- I)))))
                    )
                    TEXT_LIST
                  )
               )
             )

            (setq TEXT_LIST (vl-sort TEXT_LIST '>))
             (setq RETURN (LIST-SAME TEXT_LIST))
             (foreach X RETURN
               (setq TOTAL (cons (cadr X) TOTAL))
             )

            (setq ALL (apply '+ TOTAL))

            (setq FILE (open FILENAME "a"))
             (mapcar '(lambda (X)
                        (setq STR (strcat (car X) "   " (itoa (cadr X))))
                        (write-line STR FILE)
                      )
                     RETURN
             )
             (write-line (strcat PRE "开头合计" (itoa ALL)) FILE)
             (write-line " " FILE)
             (close FILE)
           )
         )
       )
       (startapp "notepad.exe" FILENAME)
     )
   )
   (princ)
)
 楼主| 发表于 2013-4-26 14:02:53 | 显示全部楼层
Andyhon 发表于 2013-4-26 13:53
Try This one ...

谢谢Andyhon ,真是及时雨
发表于 2013-4-26 14:54:57 | 显示全部楼层
路过学习学习
发表于 2013-10-20 07:35:06 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2015-7-22 16:58:05 | 显示全部楼层
楼主是否可以将此插件改成不限制文字类型的,即不是字母文本也可统计数量,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-21 18:19 , Processed in 0.713379 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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