429014673 发表于 2011-11-25 15:27:16

【求助】改为框选

;;统计图形中的文本个数
(defun C:TT (/ SS LST I STR TMP)
    (if    (setq SS (ssget "X" '((0 . "*TEXT"))))
    (progn
      ;;统计数量
      (setq LST '()
          I   0
      )
      (repeat (sslength SS)
      (setq STR (cdr (assoc 1 (entget (ssname SS I)))))
      (if (setq TMP (assoc STR LST))
            (setq LST (subst (list STR (1+ (cadr TMP)))
                     TMP
                     LST
                  )
            )
            (setq LST (cons (list STR 1) LST))
      )
      (setq I (1+ I))
      )
      ;;输出结果
      (foreach TMP LST
;;;      (if (= (cadr TMP) 1)
;;;            ()
      (princ
            (strcat "\n内容: "
                (car TMP)
                " 个数为: "
                (itoa (cadr TMP))
            )
      )
;;;      )
      )
    ) ;_结束progn
    (princ "\n图形中不存在文本对象。")
    ) ;_结束if
    (princ)
) ;_结束defun

程序出自http://bbs.mjtd.com/forum.php?mod=viewthread&tid=62886


如上图,希望可以改为框选,希望结果可以写在模型空间上(如上图右边)(原显示在命令行中,查看不方便)谢谢。。。

hnfsf 发表于 2012-2-20 19:21:11

挺不错的,方便使用,谢谢共享

jake2017 发表于 2025-5-13 21:18:42

谢谢大神分享!

yjr111 发表于 2011-11-25 20:29:58

字符串处理稍微熟悉一点,自己写了一个,看看能不能满足你的要求。。。

(defun c:tjwb(/ LST1 N E S WB SS lst2 lst_new shuz lst lst11 lst12 height p1 WBJULI)
(setq ss(ssget '((0 . "TEXT")))N 0)
(REPEAT (SSLENGTH SS)
    (SETQ E(SSNAME SS N)
    S(ENTGET E)
    WB(CDR(ASSOC 1 S))
    height (CDR(ASSOC 40 s))
          LST1 (CONS WB LST1)
    )
       (SETQN (1+ N))
    )
   (while (>(LENGTH LST1)0)
   (IF (NOT(MEMBER (NTH 0 LST1)LST2))
   (progn
   (SETQ LST2 (append LST2 (list(strcat(NTH 0 LST1) "=")))
         lst_new(vl-remove (NTH 0 LST1) LST1)
         shuz (itoa(-(LENGTH LST1)(length lst_new)))
         lst2 (append lst2 (list shuz))
         lst1 lst_new)
   )
   )
   (setq lst (cons lst2 lst)lst2 nil)
   )
(mapcar '(lambda(x) (setq lst11(cons(strcat (car x)(cadr x))lst11))) lst)
(setq lst11(acad_strlsort lst11))
(setq WBJULI (* height 1.4))
(setq p1 (getpoint "\n请指定插入点:"))
(setq n 0)
(foreach x lst11
   (command "text" p1 height "" x)
   (command )
    (setq p1 (list (car p1)(- (cadr p1) WBJULI) (caddr p1)))
    (setq n(1+ n))
   )
   (princ)
)

   



yjr111 发表于 2011-11-26 10:47:08

yjr111 发表于 2011-11-25 20:29 static/image/common/back.gif
字符串处理稍微熟悉一点,自己写了一个,看看能不能满足你的要求。。。

开头加一句(setvar "osmode" 0)即可

669423907 发表于 2012-2-20 18:47:25

yjr111 发表于 2011-11-25 20:29 static/image/common/back.gif
字符串处理稍微熟悉一点,自己写了一个,看看能不能满足你的要求。。。

这个很适合我!谢谢!

注册 发表于 2012-5-9 21:25:18

这个对我编门窗表有好处,谢谢

★飞飛★ 发表于 2012-8-17 13:19:45

挺不错的,对统计材料编号数量很方便,谢谢共享

lpl 发表于 2012-8-17 16:18:22

非常不错的代码

阿夏哥 发表于 2012-11-29 14:51:09

正是我想要的

海盗曹 发表于 2012-11-29 15:09:56

来学习一下好代码~
页: [1] 2
查看完整版本: 【求助】改为框选