nmulder 发表于 2022-7-6 12:32:01

向例程添加默认值

我不知道如何将默认值添加到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

Lee Mac 发表于 2022-7-6 12:38:19

我通常会这样做:
 

(or *def* (setq *def* 10));; First time default setup

(setq tmp (getint (strcat "\nSpecify Integer <" (itoa *def*) "> : ")))
(or (not tmp) (setq *def* tmp))

nmulder 发表于 2022-7-6 12:41:06

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

Lee Mac 发表于 2022-7-6 12:42:33

不能将此逻辑用于IF语句-大多数getXXX函数在用户输入为空时返回nil(getstring除外)。

gile 发表于 2022-7-6 12:45:40

 
是的,你可以,它有点冗长,但更明确(在我这边,我经常使用or和语句)
(or *default* (setq *default* 10.0))的工作原理与:
(if (not *default*) (setq *default* 10.0))除了第一个回路T和第二个10.0
 
例如:
 
更正错误:“顺便说一句,gile需要vl princ来串入strcat”(CAB)

CAB 发表于 2022-7-6 12:49:14

如果您想获得更多乐趣,可以添加如下范围测试:
6
 
顺便说一句,gile需要vl princ来串入strcat

flowerrobot 发表于 2022-7-6 12:52:42

只是另一种设置默认值的方法&重置其他值
默认值-V1.0。lsp

Lee Mac 发表于 2022-7-6 12:56:02

 
我不确定我写这篇文章的时候我在哪个星球上,正如你正确地指出的,Gile,我的or语句取决于getXXX函数返回nil。。。

hawstom 发表于 2022-7-6 12:59:26

CAB,你在这里的帖子太棒了。你有网站吗?

CAB 发表于 2022-7-6 13:05:19

谢谢
没有网站,负担不起开销。
 
所以我只是到处闲逛。
页: [1] 2
查看完整版本: 向例程添加默认值