乐筑天下

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

[编程交流] 向例程添加默认值

[复制链接]

6

主题

14

帖子

8

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 12:32:01 | 显示全部楼层 |阅读模式
我不知道如何将默认值添加到while循环。下面是我正在使用的代码(这是我从Tim Spangler那里获得并修改过的代码):
 
(
  1. if (= defstyle nil) (setq defstyle "Square"))
  2.         (initget 6 "Square s S Round r R")
  3.         (setq DuctStyle (getkword (strcat "\n Enter duct style (Square/Round)<"defstyle">: ")))
  4.                 (if (= DuctStyle nil) (setq DuctStyle defstyle) (setq defstyle DuctStyle))

 
下面是我还想添加默认值的while循环:
 
  1. ;; Get duct width
  2.         (if(= (strcase DuctStyle) "SQUARE")
  3.   (while(null(setq DuctWidth (getint "\n Enter duct width: ")))
  4.           (princ "\n Enter duct width: ")
  5.   )
  6.   
  7.         (while(null(setq DuctWidth (getint "\n Enter duct diameter: ")))
  8.                 (princ "\n Enter duct diameter:: ")
  9.         )
  10. )
  11. ;; Get duct height
  12. (if(= (strcase DuctStyle) "SQUARE")
  13.         (while(null(setq DuctHeight (getint "\n Enter duct height: ")))
  14.                         (princ "\n Enter duct height: ")
  15.         )
  16.         (setq DuctHeight DuctWidth)
  17. )

 
我还附上了完整的程序。
 
顺便说一句,让例程像filet命令一样“运行”要困难多少?因此,在任何后续运行中,它会自动使用最后的输入,并且只为usre提供更改输入的选项。这样,如果例程再次运行且所有输入都相同,则只需发出例程并按enter键。
 
我对LISP编程的世界还很陌生——在这里和那里尽可能多地学习。
 
谢谢非常感谢您的帮助。
RWB-管道。LSP
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:38:19 | 显示全部楼层
我通常会这样做:
 
  1. (or *def* (setq *def* 10))  ;; First time default setup
  2. (setq tmp (getint (strcat "\nSpecify Integer <" (itoa *def*) "> : ")))
  3. (or (not tmp) (setq *def* tmp))
回复

使用道具 举报

6

主题

14

帖子

8

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 12:41:06 | 显示全部楼层
李,
 
谢谢你的帮助。我一直很忙,现在正重新开始做这件事。您的代码建议有效。。。然而,我一生都无法在前面的“if”语句中获得默认设置代码。
 
现在,代码检查用户是否选择了“方形”或“圆形”。如果是正方形,则提示输入宽度和高度。如果为圆形,则提示输入直径。然后在接下来的问题中,我希望它分别提供最后一个用户输入。
 
也许我错过了一些明显的东西,但我被卡住了。如果您能提供更多帮助,我们将不胜感激。
 
谢谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:42:33 | 显示全部楼层
不能将此逻辑用于IF语句-大多数getXXX函数在用户输入为空时返回nil(getstring除外)。
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2022-7-6 12:45:40 | 显示全部楼层
 
是的,你可以,它有点冗长,但更明确(在我这边,我经常使用or和语句)
  1. (or *default* (setq *default* 10.0))
的工作原理与:
  1. (if (not *default*) (setq *default* 10.0))
除了第一个回路T和第二个10.0
 
例如:
 
更正错误:“顺便说一句,gile需要vl princ来串入strcat”(CAB)
回复

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2022-7-6 12:49:14 | 显示全部楼层
如果您想获得更多乐趣,可以添加如下范围测试:
  1. 6

 
顺便说一句,gile需要vl princ来串入strcat
回复

使用道具 举报

41

主题

301

帖子

265

银币

后起之秀

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

铜币
209
发表于 2022-7-6 12:52:42 | 显示全部楼层
只是另一种设置默认值的方法&重置其他值
默认值-V1.0。lsp
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:56:02 | 显示全部楼层
 
我不确定我写这篇文章的时候我在哪个星球上,正如你正确地指出的,Gile,我的or语句取决于getXXX函数返回nil。。。
回复

使用道具 举报

1

主题

15

帖子

17

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 12:59:26 | 显示全部楼层
CAB,你在这里的帖子太棒了。你有网站吗?
回复

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2022-7-6 13:05:19 | 显示全部楼层
谢谢
没有网站,负担不起开销。
 
所以我只是到处闲逛。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 06:27 , Processed in 0.584412 second(s), 72 queries .

© 2020-2025 乐筑天下

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