乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 73|回复: 19

[编程交流] lisp for for sum text number b

[复制链接]

2

主题

14

帖子

12

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 22:38:47 | 显示全部楼层 |阅读模式
有谁能帮我创建一个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前面没有数字。。应该是一件
请帮助我任何人。
 
 
 
谢谢
回复

使用道具 举报

4

主题

194

帖子

192

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 22:42:50 | 显示全部楼层
真的不管第一个字母是什么,数字和第一个字母之间总是有一个“*”吗?
回复

使用道具 举报

2

主题

14

帖子

12

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 22:48:01 | 显示全部楼层
感谢您的回复
否当件数为1时,将不存在*
 
如果该数字大于1,则仅表示为
2*M16*35
 
因此,当M16*35前面没有*时,应该将其视为1
 
谢谢
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 22:48:31 | 显示全部楼层
对于您提出的非常受限的格式(包含在ascii文本文件中)tsv。txt:
 
  1. [b][color=BLACK]([/color][/b]defun c:tsv [b][color=FUCHSIA]([/color][/b]/ file rf nl q v c fl[b][color=FUCHSIA])[/color][/b]
  2. [b][color=FUCHSIA]([/color][/b]setq file [b][color=NAVY]([/color][/b]if dat_file
  3.               [b][color=MAROON]([/color][/b]getfiled [color=#2f4f4f]"DATA File"[/color] dat_file [color=#2f4f4f]"txt"[/color] 2[b][color=MAROON])[/color][/b]
  4.               [b][color=MAROON]([/color][/b]getfiled [color=#2f4f4f]"DATA File"[/color] [color=#2f4f4f]"/acad/"[/color] [color=#2f4f4f]"txt"[/color] 2[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  5. [b][color=FUCHSIA]([/color][/b]setq dat_file file[b][color=FUCHSIA])[/color][/b]
  6. [b][color=FUCHSIA]([/color][/b]setq rf [b][color=NAVY]([/color][/b]open [b][color=MAROON]([/color][/b]findfile file[b][color=MAROON])[/color][/b] [color=#2f4f4f]"r"[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  7. [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]setq nl [b][color=MAROON]([/color][/b]read-line rf[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  8.         [b][color=NAVY]([/color][/b]cond [b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]= [color=#2f4f4f]""[/color] nl[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  9.               [b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]= [color=#2f4f4f]"M"[/color] [b][color=BLUE]([/color][/b]strcase [b][color=RED]([/color][/b]substr nl 1 1[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  10.                [b][color=GREEN]([/color][/b]setq q 1
  11.                      v nl
  12.                     fl [b][color=BLUE]([/color][/b]if [b][color=RED]([/color][/b]assoc v fl[b][color=RED])[/color][/b]
  13.                            [b][color=RED]([/color][/b]subst [b][color=PURPLE]([/color][/b]cons v [b][color=TEAL]([/color][/b]+ q [b][color=OLIVE]([/color][/b]cdr [b][color=GRAY]([/color][/b]assoc v fl[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b]
  14.                                   [b][color=PURPLE]([/color][/b]assoc v fl[b][color=PURPLE])[/color][/b] fl[b][color=RED])[/color][/b]
  15.                            [b][color=RED]([/color][/b]cons [b][color=PURPLE]([/color][/b]cons v q[b][color=PURPLE])[/color][/b] fl[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  16.               [b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]setq c 1[b][color=GREEN])[/color][/b]
  17.                [b][color=GREEN]([/color][/b]while [b][color=BLUE]([/color][/b]/= [color=#2f4f4f]"*"[/color] [b][color=RED]([/color][/b]substr nl c 1[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
  18.                       [b][color=BLUE]([/color][/b]setq c [b][color=RED]([/color][/b]1+ c[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  19.                [b][color=GREEN]([/color][/b]setq q [b][color=BLUE]([/color][/b]atoi [b][color=RED]([/color][/b]substr nl 1 [b][color=PURPLE]([/color][/b]1- c[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
  20.                      v [b][color=BLUE]([/color][/b]substr nl [b][color=RED]([/color][/b]1+ c[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
  21.                     fl [b][color=BLUE]([/color][/b]if [b][color=RED]([/color][/b]assoc v fl[b][color=RED])[/color][/b]
  22.                            [b][color=RED]([/color][/b]subst [b][color=PURPLE]([/color][/b]cons v [b][color=TEAL]([/color][/b]+ q [b][color=OLIVE]([/color][/b]cdr [b][color=GRAY]([/color][/b]assoc v fl[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b]
  23.                                   [b][color=PURPLE]([/color][/b]assoc v fl[b][color=PURPLE])[/color][/b] fl[b][color=RED])[/color][/b]
  24.                            [b][color=RED]([/color][/b]cons [b][color=PURPLE]([/color][/b]cons v q[b][color=PURPLE])[/color][/b] fl[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  25. [b][color=FUCHSIA]([/color][/b]close rf[b][color=FUCHSIA])[/color][/b]
  26. [b][color=FUCHSIA]([/color][/b]prin1 fl[b][color=FUCHSIA])[/color][/b]
  27. [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
-大卫
TSV。TXT文件
回复

使用道具 举报

2

主题

14

帖子

12

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 22:54:35 | 显示全部楼层
没有运气
 
autocad绘图中的所有文本都是如此,所以我需要先创建txt文件。
 
谢谢
回复

使用道具 举报

4

主题

194

帖子

192

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 22:57:02 | 显示全部楼层
图形中的文字是怎样的,例如:块名、纯文本、多行文字。你需要以某种方式将相关文字收集到一个列表中。
 
请更具体地说明你从什么开始!
回复

使用道具 举报

2

主题

14

帖子

12

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 22:57:58 | 显示全部楼层
纯文本和多行文字
 
不需要列出。。。如果它能在命令区显示,也会做好我的工作。
图纸1.dwg
回复

使用道具 举报

4

主题

194

帖子

192

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 23:02:00 | 显示全部楼层
在图纸中,所有螺栓信息都在“25_螺栓名称”层上,该层上没有其他信息,这是否成立。您需要一种方法来构建列表,而该层似乎是一个很好的起点。
回复

使用道具 举报

2

主题

14

帖子

12

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 23:04:56 | 显示全部楼层
是的,该层仅包含螺栓信息
回复

使用道具 举报

4

主题

194

帖子

192

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 23:09:35 | 显示全部楼层
然后试着这样做,上面David代码中的重载将应用于图纸中的螺栓列表。
 
  1. (defun c:tsv (/ file rf nl q v c fl)
  2.    (defun Mk_Bolt_Lst ( / ent lth sel txt boltl)
  3.       (setq sel (ssget "_X" (list (cons 0   "TEXT")
  4.                    (cons 8    "25_Bolt designation")))
  5.          )
  6.    (repeat (setq lth (sslength sel))
  7.      (setq ent (ssname sel (setq lth (1- lth)))
  8.               txt (list(cdr(assoc 1 (entget ent))))
  9.               boltL (append boltL txt)
  10.        )
  11.      )
  12.    );defun
  13.      
  14.      (foreach nl (Mk_Bolt_Lst) ; David Bethal modified code
  15.             (cond ((= "" nl))
  16.                   ((= "M" (strcase (substr nl 1 1)))
  17.                    (setq q 1
  18.                          v nl
  19.                         fl (if (assoc v fl)
  20.                                (subst (cons v (+ q (cdr (assoc v fl))))
  21.                                       (assoc v fl) fl)
  22.                                (cons (cons v q) fl))))
  23.                   ((setq c 1)
  24.                    (while (/= "*" (substr nl c 1))
  25.                           (setq c (1+ c)))
  26.                    (setq q (atoi (substr nl 1 (1- c)))
  27.                          v (substr nl (1+ c))
  28.                         fl (if (assoc v fl)
  29.                                (subst (cons v (+ q (cdr (assoc v fl))))
  30.                                       (assoc v fl) fl)
  31.                                (cons (cons v q) fl))))))
  32.      (prin1 fl)
  33.      (prin1)
  34.    );defun

以上内容在你发布的图纸上效果很好。
 
这仅适用于纯文本。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 06:10 , Processed in 0.615479 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表