乐筑天下

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

[编程交流] 比例列表编辑Lisp错误

[复制链接]

7

主题

17

帖子

10

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 08:21:47 | 显示全部楼层 |阅读模式
我创建这个lisp是为了插入比例,但我得到了一个错误“无效选项关键字”,它把我踢出了例程。我想知道是否有办法解决这个问题。从我所能理解的是,假设它达到1/4“=1’-0”,并且比例已经在绘图中使用,它将回退该错误,并且不会继续。问题的另一部分是,它不会删除正在使用的比例,所以当它创建这些比例时,其中一些已经存在,所以删除它们都不起作用。有没有一种方法可以让它在不打破常规的情况下继续下去?任何帮助都将不胜感激。
 
我最初试图留在命令中,但我有一个想法,如果每次退出命令,如果规模存在,它将继续到下一次。以下是我目前掌握的情况:
 
  1. (defun c:IS()
  2. (setvar "cmdecho" 0)
  3. (command "_.-scalelistedit" "d" "*" "e")
  4. (command "_.-scalelistedit" "a" "1:1" "1:1" "e")
  5. (command "_.-scalelistedit" "a" "1:2" "1:2" "e")
  6. (command "_.-scalelistedit" "a" "1:4" "1:4" "e")
  7. (command "_.-scalelistedit" "a" "1:8" "1:8" "e")
  8. (command "_.-scalelistedit" "a" "1" = 1'-0"" "1:12" "e")
  9. (command "_.-scalelistedit" "a" "1/2" = 1'-0"" "0.5:12" "e")
  10. (command "_.-scalelistedit" "a" "1/4" = 1'-0"" "0.25:12" "e")
  11. (command "_.-scalelistedit" "a" "3/16" = 1'-0"" "0.01875:12" "e")
  12. (command "_.-scalelistedit" "a" "1/8" = 1'-0"" "0.125:12" "e")
  13. (command "_.-scalelistedit" "a" "3/32" = 1'-0"" "0.09375:12" "e")
  14. (command "_.-scalelistedit" "a" "1/16" = 1'-0"" "0.0625:12" "e")
  15. (command "_.-scalelistedit" "a" "1/32" = 1'-0"" "0.03125:12" "e")
  16. (command "_.-scalelistedit" "a" "1/64" = 1'-0"" "0.015625:12" "e")
  17. (command "_.-scalelistedit" "a" "1" = 10'-0"" "1:120" "e")
  18. (command "_.-scalelistedit" "a" "1" = 20'-0"" "1:240" "e")
  19. (command "_.-scalelistedit" "a" "1" = 25'-0"" "1:300" "e")                             
  20. (command "_.-scalelistedit" "a" "1" = 30'-0"" "1:360" "e")
  21. (command "_.-scalelistedit" "a" "1" = 40'-0"" "1:480" "e")
  22. (command "_.-scalelistedit" "a" "1" = 50'-0"" "1:600" "e")
  23. (setvar "cmdecho" 1)
  24. (princ "\nA quote: "")
  25. )
  26. (prompt "Insert Scales Loaded.")
  27. (princ)

 
这不会退出命令:
  1. (defun c:IS()
  2. (setvar "cmdecho" 0)
  3. (command "_.-scalelistedit" "d" "*" "e")
  4. (command "_.-scalelistedit" "a" "1:1" "1:1"
  5.                             "a" "1:2" "1:2"
  6.                             "a" "1:4" "1:4"
  7.                             "a" "1:8" "1:8"
  8.                             "a" "1" = 1'-0"" "1:12"
  9.                             "a" "1/2" = 1'-0"" "0.5:12"
  10.                             "a" "1/4" = 1'-0"" "0.25:12"
  11.                             "a" "3/16" = 1'-0"" "0.01875:12"
  12.                             "a" "1/8" = 1'-0"" "0.125:12"
  13.                             "a" "3/32" = 1'-0"" "0.09375:12"
  14.                             "a" "1/16" = 1'-0"" "0.0625:12"
  15.                             "a" "1/32" = 1'-0"" "0.03125:12"
  16.                             "a" "1/64" = 1'-0"" "0.015625:12"
  17.                             "a" "1" = 10'-0"" "1:120"
  18.                             "a" "1" = 20'-0"" "1:240"
  19.                             "a" "1" = 25'-0"" "1:300"                             
  20.                             "a" "1" = 30'-0"" "1:360"
  21.                             "a" "1" = 40'-0"" "1:480"
  22.                             "a" "1" = 50'-0"" "1:600" "e")
  23. (setvar "cmdecho" 1)
  24. (princ "\nA quote: "")
  25. )
  26. (prompt "Insert Scales Loaded.")
  27. (princ)
回复

使用道具 举报

91

主题

428

帖子

326

银币

后起之秀

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

铜币
474
发表于 2022-7-6 08:31:24 | 显示全部楼层
您必须从比例列表中删除1:1,因为即使删除所有比例,它也始终存在。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:33:51 | 显示全部楼层
(setvar专家5)
 
  1. (defun c:IS_  ( / Scalelist i n)
  2.      (setvar "cmdecho" 0)
  3.      (setvar "expert" 5)
  4.      (setq ScaleList
  5.                 (list
  6.                       '("1:2" "1:2")
  7.                       '("1:4" "1:4")
  8.                       '("1:8" "1:8")
  9.                       '("1" = 1'-0"" "1:12")
  10.                       '("1/2" = 1'-0"" "0.5:12")
  11.                       '("1/4" = 1'-0"" "0.25:12")
  12.                       '("3/16" = 1'-0"" "0.01875:12")
  13.                       '("1/8" = 1'-0"" "0.125:12")
  14.                       '("3/32" = 1'-0"" "0.09375:12")
  15.                       '("1/16" = 1'-0"" "0.0625:12")
  16.                       '("1/32" = 1'-0"" "0.03125:12")
  17.                       '("1/64" = 1'-0"" "0.015625:12")
  18.                       '("1" = 10'-0"" "1:120")
  19.                       '("1" = 20'-0"" "1:240")
  20.                       '("1" = 25'-0"" "1:300")
  21.                       '("1" = 30'-0"" "1:360")
  22.                       '("1" = 40'-0"" "1:480")
  23.                       '("1" = 50'-0"" "1:600"))
  24.            )
  25.      (command "_.-scalelistedit" "a")
  26.      (repeat (setq i (length ScaleList))
  27.            (setq n (nth (setq i (1- i)) ScaleList))
  28.            (command
  29.                  (car n)
  30.                  (cadr n)
  31.                  (if (zerop i)
  32.                        "e"
  33.                        "a"))
  34.            )
  35.      (princ)
  36.      )
回复

使用道具 举报

5

主题

26

帖子

21

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 08:38:30 | 显示全部楼层
如果我想抹掉所有的英寸刻度?
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:42:31 | 显示全部楼层
 
什么意思?
回复

使用道具 举报

5

主题

26

帖子

21

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 08:50:44 | 显示全部楼层
我只想保持1:1、1:10、4:1。。。。结束以全部擦除
1/2 \“=1'-0…其他英寸刻度。。。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:54:09 | 显示全部楼层
在Annoscale列表中添加一项是一回事,但删除particualr named scale并不需要lisp代码
 
但是给你一个主意
 
  1. (defun ScaleList (/ a)               
  2. (foreach
  3.           scle  (dictsearch (namedobjdict) "ACAD_SCALELIST")
  4.          (if (= 350 (car scle))
  5.            (setq a (cons (cdr (assoc 300 (entget (cdr scle)))) a)))
  6.      a
  7.          )
  8.      )

 
这将为您提供当前的scalelist,您只需找到要删除的并将其传递(命令“_。-scalelistedit”…)与我之前发布的内容类似
回复

使用道具 举报

5

主题

26

帖子

21

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 08:58:35 | 显示全部楼层
似乎是这样的问题:(命令“-scalelistedit”“d”“1/16”=1'-0”““e”)
1/16“=1'-0”。。。太多“”
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 09:02:05 | 显示全部楼层
 
(命令“-scalelistedit”“d”“1/16\”=1'-0\“e”);
 
 
  1. (defun c:ErInch  (/ ScaleList)
  2. (defun ScaleList  (/ a)
  3.    (foreach
  4.           scle
  5.               (dictsearch (namedobjdict) "ACAD_SCALELIST")
  6.          (if (= 350 (car scle))
  7.                (setq a    (cons (cdr  (assoc
  8.                                             300
  9.                                             (entget
  10.                                                   (cdr  scle))))
  11.                                 a)))
  12.          a
  13.          )
  14.    )
  15.      (foreach
  16.             n  (ScaleList)
  17.            (wcmatch n "*"")
  18.            (command "_.-scalelistedit" "_D" n "e")
  19.            )
  20.      (princ)
  21.      )

 
注意:如果比例是当前比例或由注释性对象支持,则无法删除该比例。
 
示例消息:
比例1“=1”被引用,因此无法删除。
回复

使用道具 举报

5

主题

26

帖子

21

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 09:07:44 | 显示全部楼层
太好了,谢谢!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 08:04 , Processed in 0.420177 second(s), 83 queries .

© 2020-2025 乐筑天下

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