lisp for for sum text number b
有谁能帮我创建一个lisp,在一个特定的字母表字符之前求和文本数实例
5*M16*35
2*M16*40
4*M16*45
4*M16*35
3*M16*40
6*M16*45
M16*35
M16*40
M16*45
后果
M16*35=10
M16*40=6
M16*45=11
第一个数字表示工件的数量,就像一个图形中的文本有这么多一样。
我需要一个lisp来计算每种类型有多少在该图纸,并给我在csv文件或在同一个图纸表。
如果M16前面没有数字。。应该是一件
请帮助我任何人。
谢谢 真的不管第一个字母是什么,数字和第一个字母之间总是有一个“*”吗? 感谢您的回复
否当件数为1时,将不存在*
如果该数字大于1,则仅表示为
2*M16*35
因此,当M16*35前面没有*时,应该将其视为1
谢谢 对于您提出的非常受限的格式(包含在ascii文本文件中)tsv。txt:
(defun c:tsv (/ file rf nl q v c fl)
(setq file (if dat_file
(getfiled "DATA File" dat_file "txt" 2)
(getfiled "DATA File" "/acad/" "txt" 2)))
(setq dat_file file)
(setq rf (open (findfile file) "r"))
(while (setq nl (read-line rf))
(cond ((= "" nl))
((= "M" (strcase (substr nl 1 1)))
(setq q 1
v nl
fl (if (assoc v fl)
(subst (cons v (+ q (cdr (assoc v fl))))
(assoc v fl) fl)
(cons (cons v q) fl))))
((setq c 1)
(while (/= "*" (substr nl c 1))
(setq c (1+ c)))
(setq q (atoi (substr nl 1 (1- c)))
v (substr nl (1+ c))
fl (if (assoc v fl)
(subst (cons v (+ q (cdr (assoc v fl))))
(assoc v fl) fl)
(cons (cons v q) fl))))))
(close rf)
(prin1 fl)
(prin1))
-大卫
TSV。TXT文件 没有运气
autocad绘图中的所有文本都是如此,所以我需要先创建txt文件。
谢谢 图形中的文字是怎样的,例如:块名、纯文本、多行文字。你需要以某种方式将相关文字收集到一个列表中。
请更具体地说明你从什么开始! 纯文本和多行文字
不需要列出。。。如果它能在命令区显示,也会做好我的工作。
图纸1.dwg 在图纸中,所有螺栓信息都在“25_螺栓名称”层上,该层上没有其他信息,这是否成立。您需要一种方法来构建列表,而该层似乎是一个很好的起点。 是的,该层仅包含螺栓信息 然后试着这样做,上面David代码中的重载将应用于图纸中的螺栓列表。
(defun c:tsv (/ file rf nl q v c fl)
(defun Mk_Bolt_Lst ( / ent lth sel txt boltl)
(setq sel (ssget "_X" (list (cons 0 "TEXT")
(cons 8 "25_Bolt designation")))
)
(repeat (setq lth (sslength sel))
(setq ent (ssname sel (setq lth (1- lth)))
txt (list(cdr(assoc 1 (entget ent))))
boltL (append boltL txt)
)
)
);defun
(foreach nl (Mk_Bolt_Lst) ; David Bethal modified code
(cond ((= "" nl))
((= "M" (strcase (substr nl 1 1)))
(setq q 1
v nl
fl (if (assoc v fl)
(subst (cons v (+ q (cdr (assoc v fl))))
(assoc v fl) fl)
(cons (cons v q) fl))))
((setq c 1)
(while (/= "*" (substr nl c 1))
(setq c (1+ c)))
(setq q (atoi (substr nl 1 (1- c)))
v (substr nl (1+ c))
fl (if (assoc v fl)
(subst (cons v (+ q (cdr (assoc v fl))))
(assoc v fl) fl)
(cons (cons v q) fl))))))
(prin1 fl)
(prin1)
);defun
以上内容在你发布的图纸上效果很好。
这仅适用于纯文本。
页:
[1]
2