乐筑天下

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

[编程交流] 需要帮助计算数字

[复制链接]

6

主题

38

帖子

32

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 06:52:40 | 显示全部楼层 |阅读模式
有人能帮我修改下面粘贴的代码吗?因为我从其他网站得到的Lisp程序。。。但我想根据我的要求修改。。。我不熟悉lisp程序。。。请有人帮帮我。。
 
 
目前,这个lisp将只在每个文本选择中添加第一个数字中的数字(即2,3)。。。但我想做如下改变。。
 
根据快照。。。总计=((2*4)+(3*5)+(5*6))=53
 
075242y6a3l36ojle3loue.jpg
 
代码是
  1. (Defun c:add()
  2. (setq sset(Ssget '(( 0 . "TEXT")))
  3. Index 0
  4. val 0)
  5. (repeat (sslength sset)
  6.    (setq strend(- (strlen (cdr(Assoc 1 (entget(ssname sset index)))))4)          
  7.              cval (substr (cdr(Assoc 1 (entget(ssname sset index)))) 1 strend)
  8.   cval1(atoi cval)
  9.              val(+ val cval1))
  10.    (Setq index (+ 1 index)))
  11. (alert (Strcat "Total " (rtos val 2 0) " No's found")))
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 07:07:30 | 显示全部楼层
这是一组非常具体的情况。
 
值是否总是第一个和第三个字符
它们总是数值吗
 

 
 
-大卫
回复

使用道具 举报

6

主题

38

帖子

32

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 07:13:26 | 显示全部楼层
谢谢David Bethel。。。
 
 
对仅第一个和第三个字符。。。但第三个字符将是一个或两个数字(例如33、43)
 
 
对所有值始终仅为数值
回复

使用道具 举报

9

主题

167

帖子

163

银币

初来乍到

Rank: 1

铜币
43
发表于 2022-7-6 07:23:23 | 显示全部楼层
试试这个
 
  1. (defun c:add (/ cval cval1 index l ss strend val)
  2. (setq ss    (ssget '(( 0 . "text")))
  3. l     (sslength ss)
  4. index 0
  5. val   0)
  6. (repeat l
  7.    (setq strend (cdr(assoc 1 (entget(ssname ss index))))          
  8.              cval   (atoi (substr strend 3))
  9.   cval1  (atoi strend)
  10.              val    (+ val (* cval cval1))
  11.          index  (+ 1 index)))
  12. (alert (strcat "total = " (rtos val 2 0))))
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 07:33:09 | 显示全部楼层
也许 吧:
 
  1. [b][color=BLACK]([/color][/b]defun c:sumtext [b][color=FUCHSIA]([/color][/b]/ ss i en tv i1 i2 vl sum[b][color=FUCHSIA])[/color][/b]
  2. [b][color=FUCHSIA]([/color][/b]and [b][color=NAVY]([/color][/b]setq ss [b][color=MAROON]([/color][/b]ssget '[b][color=GREEN]([/color][/b][b][color=BLUE]([/color][/b]0 . [color=#2f4f4f]"TEXT"[/color][b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]1 . [color=#2f4f4f]"#?#*"[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  3.       [b][color=NAVY]([/color][/b]setq i 0[b][color=NAVY])[/color][/b]
  4.       [b][color=NAVY]([/color][/b]while [b][color=MAROON]([/color][/b]setq en [b][color=GREEN]([/color][/b]ssname ss i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  5.              [b][color=MAROON]([/color][/b]setq tv [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 1 [b][color=RED]([/color][/b]entget en[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  6.                    i1 [b][color=GREEN]([/color][/b]atoi [b][color=BLUE]([/color][/b]substr tv 1 1[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  7.                    i2 [b][color=GREEN]([/color][/b]if [b][color=BLUE]([/color][/b]wcmatch [b][color=RED]([/color][/b]substr tv 4 1[b][color=RED])[/color][/b] [color=#2f4f4f]"#"[/color][b][color=BLUE])[/color][/b]
  8.                           [b][color=BLUE]([/color][/b]atoi [b][color=RED]([/color][/b]substr tv 3 2[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
  9.                           [b][color=BLUE]([/color][/b]atoi [b][color=RED]([/color][/b]substr tv 3 1[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  10.                    vl [b][color=GREEN]([/color][/b]cons [b][color=BLUE]([/color][/b]* i1 i2[b][color=BLUE])[/color][/b] vl[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  11.              [b][color=MAROON]([/color][/b]setq i [b][color=GREEN]([/color][/b]1+ i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  12.         [b][color=NAVY]([/color][/b]setq sum [b][color=MAROON]([/color][/b]apply '+ vl[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  13. [b][color=FUCHSIA]([/color][/b]prin1 sum[b][color=FUCHSIA])[/color][/b]
  14. [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
-大卫
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:50:16 | 显示全部楼层
这将允许“x”两侧有任意数量的数字:
  1. (defun c:addit ( / a b c d )
  2.    (if (setq a (ssget '((0 . "TEXT") (1 . "#*[xX]#*"))))
  3.        (repeat (setq b (sslength a))
  4.            (setq c (strcase (cdr (assoc 1 (entget (ssname a (setq b (1- b)))))))
  5.                  d (cons (* (atoi c) (atoi (substr c (+ 2 (vl-string-position 88 c))))) d)
  6.            )
  7.        )
  8.    )
  9.    (print (apply '+ d))
  10.    (princ)
  11. )
回复

使用道具 举报

6

主题

38

帖子

32

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 07:55:53 | 显示全部楼层
谢谢paulmcz,David Bethel和Lee Mac。。工作正常。。。谢谢。。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 14:53 , Processed in 0.493100 second(s), 69 queries .

© 2020-2025 乐筑天下

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