在Lisp中使用时
大家好,我想我有一个简单的问题,所以希望我能找到我的答案…
当我使用这段代码时,一切都很好
(而(/=dst1“400”)
(setq dst1(getstring T“\n输入宽度(400200):”)
然而,当我尝试使用“或”时,我无法使其工作
(while(或(/=dst1“400”)(/=dst1“200”))
(setq dst1(getstring T“\n输入宽度(400200):”)
提前感谢! 如果dst1在or语句中不等于400或200,它将返回nil。因此,终止时。试着用and代替or。 如果要使用getstring函数,为什么不按下面的方法操作呢
(initget 7 "200 400")
(setq dst1 (getstring T "\nEnter Width (400,200): "))
但要回答你的问题,请尝试,
另一方面,我认为你需要一个“and”而不是“or”语句。
还有,如果我的记忆中断了,正确的“/”有时会引起问题,最好使用“不”。。。请注意,我年轻时很安静。
或
(while (not (member dst1 '("200" "400"))).... FlowerRobot,initget与getstring不兼容。 感谢您的回复。
我没有成功使用(initget 7“400 200”),因为如果我输入400和200以外的值,程序将继续。然而,使用“and”和(not)(或在大多数情况下都不起作用,但我现在的问题是,如果我输入400作为宽度,然后在一分钟后重复该命令,它将跳过while循环(这是要求输入距离的部分)并移到下一步。它似乎是在记住第一次使用命令时输入的距离。。。有什么原因吗?
再次感谢 您没有本地化变量。在没有看到代码的情况下很难猜测。
为什么不使用getreal、getdist或getint来消除用户输入字母字符?如果需要,您可以随时将其转换为字符串。 一旦这段代码完成,我将把它添加到我们办公室的另一段代码中,这段代码绘制了辐射体线。这部分将有助于抵消线。。。
(定义c:测试(/en1 pt1和)
(setvar“cmdecho”0)
(而不是(或(=dst1“400”)(=dst1“200”))
(setq dst1(getstring T“\n输入宽度(400200):”)
)
(setq en1(entlast))
(setq pt1(getpoint“\n指定偏移侧:”)
(如果(=dst1“400”)
(程序
(命令“.u offset”400 en1“\u non”pt1”)
))
(如果(=dst1“200”)
(程序
(命令“.u offset”200 en1“\u non”pt1”)
))
(setvar“cmdecho”1)
(普林斯)
)
我必须添加dst1,我必须删除和我的局部变量
谢谢大家 尝试以下操作:
3
此外,如果启用动态模式,您可以选择200或400,或者单击鼠标右键。
哎呀,我在想getkword,但写getstring的时候,喝着我早上的咖啡,所以你知道这是怎么回事。。。
页:
[1]
2