【求助】改为框选
;;统计图形中的文本个数(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
如上图,希望可以改为框选,希望结果可以写在模型空间上(如上图右边)(原显示在命令行中,查看不方便)谢谢。。。 挺不错的,方便使用,谢谢共享 谢谢大神分享! 字符串处理稍微熟悉一点,自己写了一个,看看能不能满足你的要求。。。
(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-25 20:29 static/image/common/back.gif
字符串处理稍微熟悉一点,自己写了一个,看看能不能满足你的要求。。。
开头加一句(setvar "osmode" 0)即可 yjr111 发表于 2011-11-25 20:29 static/image/common/back.gif
字符串处理稍微熟悉一点,自己写了一个,看看能不能满足你的要求。。。
这个很适合我!谢谢! 这个对我编门窗表有好处,谢谢 挺不错的,对统计材料编号数量很方便,谢谢共享 非常不错的代码 正是我想要的 来学习一下好代码~
页:
[1]
2