各位大神,求输入TT,选择文字,统计还有符号 - 的文字个数,分别列出
本帖最后由 664571221 于 2025-5-24 11:40 编辑各位大神,求输入TT,选择文字,统计含有符号 - 的文字个数,分别列出插入cad,如下图,附图纸
(defun c:tt2 (/ ss i ent txt prefix prefix-list count-dict text-style text-height text-layer text-color pt row y-pos)
(vl-load-com)
; 选择包含编号的文本对象
(if (setq ss (ssget '((0 . "TEXT"))))
(progn
; 初始化前缀列表和统计字典
(setq prefix-list '()
count-dict '())
; 获取第一个文本的属性作为参考
(setq ent (ssname ss 0)
text-style (cdr (assoc 7 (entget ent)))
text-height (cdr (assoc 40 (entget ent)))
text-layer (cdr (assoc 8 (entget ent)))
text-color (cdr (assoc 62 (entget ent))))
; 遍历所有选中的文本
(repeat (setq i (sslength ss))
(setq ent (ssname ss (setq i (1- i)))
txt (cdr (assoc 1 (entget ent))))
; 提取前缀(字母部分)
(if (setq prefix (vl-string-right-trim "0123456789" txt))
(progn
; 添加到前缀列表
(if (not (member prefix prefix-list))
(setq prefix-list (cons prefix prefix-list)))
; 更新统计计数
(if (assoc prefix count-dict)
(setq count-dict (subst (cons prefix (1+ (cdr (assoc prefix count-dict))))
(assoc prefix count-dict)
count-dict))
(setq count-dict (cons (cons prefix 1) count-dict))))))
; 按字母顺序排序前缀列表
(setq prefix-list (vl-sort prefix-list '<))
; 获取插入点
(setq pt (getpoint "\n指定统计结果插入点: "))
; 输出统计结果
(setq row 1)
(foreach prefix prefix-list
(setq y-pos (- (cadr pt) (* row text-height 1.5))
txt (strcat prefix "共有" (itoa (cdr (assoc prefix count-dict))) "个"))
(entmake (list '(0 . "TEXT")
(cons 1 txt)
(cons 10 (list (car pt) y-pos 0))
(cons 40 text-height)
(cons 7 text-style)
(cons 8 text-layer)
(if text-color (cons 62 text-color))))
(setq row (1+ row))))
(princ "\n未选择任何文本对象。"))
(princ))
同行?给排水的?
论坛有类似的你得花点时间自己搜寻下 shujh1989 发表于 2025-5-24 15:24
同行?给排水的?
厉害了兄弟,加我qq头像上 (defun c:tt (/ e i p s s0 s1 ss)
(if (setq s (ssget '((0 . "TEXT") (1 . "*-*"))))
(progn
(setq i -1)
(while (setq e (ssname s (setq i (1+ i))))
(setq s0 (cdr (assoc 1 (entget e))))
(setq s0 (substr s0 1 (1+ (vl-string-search "-" s0))))
(setq ss (cons s0 ss))
)
(setq s1 "")
(while (setq e (car ss))
(setq s (vl-remove-if-not '(lambda(x)(= e x))ss))
(setq ss (vl-remove e ss))
(setq s1 (strcat s1e "共有" (itoa (length s))"个\\P"))
)
(and (setq p (getpoint))
(entmakex
(list '(0 . "MTEXT")
'(100 . "AcDbEntity")
'(100 . "AcDbMText")
(cons 7 (getvar "TEXTSTYLE"))
(cons 1 s1)
(cons 10 p)
)
)
)
)
)
)波总的代码 664571221 发表于 2025-5-24 15:29
厉害了兄弟,加我qq头像上
以前加过,哈哈 shujh1989 发表于 2025-5-24 15:24
同行?给排水的?
为啥我的统计出来就是全部个数呢? shujh1989 发表于 2025-5-24 15:24
同行?给排水的?
怎么我加载,会显示有输入的列表有缺陷??我的是CAD2023 古藤上树 发表于 2025-5-27 16:19
怎么我加载,会显示有输入的列表有缺陷??我的是CAD2023
一般是编码的问题,记事本打开的话另存为ANSI格式试一下。楼主的编号是CAD单行文字,可以用。天正的文字应该不行。 古藤上树 发表于 2025-5-27 16:19
怎么我加载,会显示有输入的列表有缺陷??我的是CAD2023
楼主文件中是CAD单行文字,天正之类的应该不适用。
页:
[1]
2