向例程添加默认值
我不知道如何将默认值添加到while循环。下面是我正在使用的代码(这是我从Tim Spangler那里获得并修改过的代码):(
if (= defstyle nil) (setq defstyle "Square"))
(initget 6 "Square s S Round r R")
(setq DuctStyle (getkword (strcat "\n Enter duct style (Square/Round)<"defstyle">: ")))
(if (= DuctStyle nil) (setq DuctStyle defstyle) (setq defstyle DuctStyle))
下面是我还想添加默认值的while循环:
;; Get duct width
(if(= (strcase DuctStyle) "SQUARE")
(while(null(setq DuctWidth (getint "\n Enter duct width: ")))
(princ "\n Enter duct width: ")
)
(while(null(setq DuctWidth (getint "\n Enter duct diameter: ")))
(princ "\n Enter duct diameter:: ")
)
)
;; Get duct height
(if(= (strcase DuctStyle) "SQUARE")
(while(null(setq DuctHeight (getint "\n Enter duct height: ")))
(princ "\n Enter duct height: ")
)
(setq DuctHeight DuctWidth)
)
我还附上了完整的程序。
顺便说一句,让例程像filet命令一样“运行”要困难多少?因此,在任何后续运行中,它会自动使用最后的输入,并且只为usre提供更改输入的选项。这样,如果例程再次运行且所有输入都相同,则只需发出例程并按enter键。
我对LISP编程的世界还很陌生——在这里和那里尽可能多地学习。
谢谢非常感谢您的帮助。
RWB-管道。LSP 我通常会这样做:
(or *def* (setq *def* 10));; First time default setup
(setq tmp (getint (strcat "\nSpecify Integer <" (itoa *def*) "> : ")))
(or (not tmp) (setq *def* tmp))
李,
谢谢你的帮助。我一直很忙,现在正重新开始做这件事。您的代码建议有效。。。然而,我一生都无法在前面的“if”语句中获得默认设置代码。
现在,代码检查用户是否选择了“方形”或“圆形”。如果是正方形,则提示输入宽度和高度。如果为圆形,则提示输入直径。然后在接下来的问题中,我希望它分别提供最后一个用户输入。
也许我错过了一些明显的东西,但我被卡住了。如果您能提供更多帮助,我们将不胜感激。
谢谢 不能将此逻辑用于IF语句-大多数getXXX函数在用户输入为空时返回nil(getstring除外)。
是的,你可以,它有点冗长,但更明确(在我这边,我经常使用or和语句)
(or *default* (setq *default* 10.0))的工作原理与:
(if (not *default*) (setq *default* 10.0))除了第一个回路T和第二个10.0
例如:
更正错误:“顺便说一句,gile需要vl princ来串入strcat”(CAB) 如果您想获得更多乐趣,可以添加如下范围测试:
6
顺便说一句,gile需要vl princ来串入strcat 只是另一种设置默认值的方法&重置其他值
默认值-V1.0。lsp
我不确定我写这篇文章的时候我在哪个星球上,正如你正确地指出的,Gile,我的or语句取决于getXXX函数返回nil。。。 CAB,你在这里的帖子太棒了。你有网站吗? 谢谢
没有网站,负担不起开销。
所以我只是到处闲逛。
页:
[1]
2