乐筑天下

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

[编程交流] 列表总和问题

[复制链接]

7

主题

34

帖子

27

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 15:33:14 | 显示全部楼层 |阅读模式
我有一个“while”循环,每次循环时将在命令行中输入的内容添加到列表中。然后我想得到列表中所有数字的总和。我很有信心这会奏效:
 
  1. (setq CLength1 (apply '+ (list lst)))

 
但我在命令行上发现了这个错误:
 
  1. ; error: bad argument type: numberp: (36 36 36 36)

 
完整的“while”代码:
 
  1. (while
  2. (progn
  3. (initget "U")
  4. (setq d (getdist (strcat "\Distance to next Vert Strap (Enter when done; U to Undo)"))))
  5. (setq lst (cons (fix d) lst))
  6. (cond
  7. ((= d "U") (command "._undo" "._back"))
  8. ((/= d 0)
  9. (progn
  10.      (command "._offset"
  11.               (/ d 12.)
  12.               s
  13.               "_non"
  14.               (polar (cdr (assoc 10 (entget s))) 0. 1.)
  15.               ""
  16.      )
  17.      (if (not (eq s (setq s (entlast))))
  18.        (progn
  19.          (setq p1 (cdr (assoc 10 (entget s)))
  20.                p2 (cdr (assoc 11 (entget s)))
  21.                pt (if (< (cadr p1) (cadr p2))
  22.                     p1
  23.                     p2
  24.                   )
  25.          )
  26.           (setq dx1 (car p1)   ;ent x value
  27.                         dx2 (cadr p1)  ;ent y value
  28.                         dx3 (caddr p1) ;ent z value
  29.                         dd1 (+ dx1 (/ d 12)) ;dimension distance
  30.                         sdx (- dx1 (/ d 12))  ;start point x
  31.                         dmx (/ (+ dd1 dx1) 2) ;middle
  32.           )
  33.           (if (>= d 18)       
  34.         (setq doff -1.6)
  35.         (setq doff -3.2)
  36.         )
  37.          (entmake (list (cons 0 "DIMENSION")
  38.           (cons 100  "AcDbEntity")
  39.           (cons 67 0)         
  40.       (cons 8  "DIMBAD")
  41.       (cons 100  "AcDbDimension")
  42.           (cons 10 (trans (list dd1 doff 0.) 1 0))
  43.           (cons 11 (trans (list dmx doff 0.) 1 0))
  44.           (cons 12 (list 0. 0. 0.))
  45.           (cons 70  33)
  46.       (cons 1  "")
  47.       (cons 71  5)
  48.       (cons 72  1)
  49.       (cons 41  1.0)
  50.           (cons 52 0)
  51.       (cons 53 0)
  52.       (cons 54  0)
  53.           (cons 3  "TEMPLATE_DRAWING")
  54.           (cons 100  "AcDbAlignedDimension")
  55.           (cons 13 (trans (list sdx 0. 0.) 1 0))
  56.           (cons 14 (trans (list dx1 0. 0.) 1 0))
  57.           (cons 15 (list 0. 0. 0.))
  58.       (cons 16 (list 0. 0. 0.))
  59.           ))
  60.        )
  61.      )
  62.    )
  63. )))
  64. (setq CLength1 (apply '+ (list lst)))
  65. (princ CLength1)
回复

使用道具 举报

55

主题

402

帖子

357

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
274
发表于 2022-7-5 15:50:35 | 显示全部楼层
试试看
  1. (setq CLength1 (apply '+ lst))

 
完整代码:
  1. (while
  2. (progn
  3.    (initget "U")
  4.    (setq d
  5.    (getdist
  6.      (strcat
  7.        "\Distance to next Vert Strap (Enter when done; U to Undo)"
  8.      )
  9.    )
  10.    )
  11. )
  12.   (setq lst (cons (fix d) lst))
  13.   (cond
  14.     ((= d "U") (command "._undo" "._back"))
  15.     ((/= d 0)
  16.      (progn
  17. (command "._offset"
  18.          (/ d 12.)
  19.          s
  20.          "_non"
  21.          (polar (cdr (assoc 10 (entget s))) 0. 1.)
  22.          ""
  23. )
  24. (if (not (eq s (setq s (entlast))))
  25.   (progn
  26.     (setq p1 (cdr (assoc 10 (entget s)))
  27.           p2 (cdr (assoc 11 (entget s)))
  28.           pt (if (< (cadr p1) (cadr p2))
  29.                p1
  30.                p2
  31.              )
  32.     )
  33.     (setq dx1 (car p1)                ;ent x value
  34.           dx2 (cadr p1)                ;ent y value
  35.           dx3 (caddr p1)        ;ent z value
  36.           dd1 (+ dx1 (/ d 12))        ;dimension distance
  37.           sdx (- dx1 (/ d 12))        ;start point x
  38.           dmx (/ (+ dd1 dx1) 2)        ;middle
  39.     )
  40.     (if        (>= d 18)
  41.       (setq doff -1.6)
  42.       (setq doff -3.2)
  43.     )
  44.     (entmake (list (cons 0 "DIMENSION")
  45.                    (cons 100 "AcDbEntity")
  46.                    (cons 67 0)
  47.                    (cons 8 "DIMBAD")
  48.                    (cons 100 "AcDbDimension")
  49.                    (cons 10 (trans (list dd1 doff 0.) 1 0))
  50.                    (cons 11 (trans (list dmx doff 0.) 1 0))
  51.                    (cons 12 (list 0. 0. 0.))
  52.                    (cons 70 33)
  53.                    (cons 1 "")
  54.                    (cons 71 5)
  55.                    (cons 72 1)
  56.                    (cons 41 1.0)
  57.                    (cons 52 0)
  58.                    (cons 53 0)
  59.                    (cons 54 0)
  60.                    (cons 3 "TEMPLATE_DRAWING")
  61.                    (cons 100 "AcDbAlignedDimension")
  62.                    (cons 13 (trans (list sdx 0. 0.) 1 0))
  63.                    (cons 14 (trans (list dx1 0. 0.) 1 0))
  64.                    (cons 15 (list 0. 0. 0.))
  65.                    (cons 16 (list 0. 0. 0.))
  66.              )
  67.     )
  68.   )
  69. )
  70.      )
  71.     )
  72.   )
  73. )
  74. (setq CLength1 (apply '+ lst))
  75. (princ (rtos lst 2 0)) ; Add precision here
回复

使用道具 举报

7

主题

34

帖子

27

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 15:59:15 | 显示全部楼层
 
是的,就是这样!每个例子都说把列表称为(list lst),不知道为什么。但无论如何谢谢你
回复

使用道具 举报

55

主题

402

帖子

357

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
274
发表于 2022-7-5 16:14:45 | 显示全部楼层
当您在此时添加(setq lst(cons(fix d)lst))时,您已经将lst变量定义为list,然后无需再次添加(list lst)。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 16:31:59 | 显示全部楼层
您可以直接执行求和,而不是构建列表,例如替换:
  1. (setq lst (cons (fix d) lst))

使用:
  1. (setq CLength1 (+ (cond (CLength1) (0)) (fix d)))
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-5 16:36:20 | 显示全部楼层
 
我的想法完全正确。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 21:05 , Processed in 0.359760 second(s), 64 queries .

© 2020-2025 乐筑天下

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