空格键作为enter键
我有一个例程,通过STRCASE等向用户提问。我使用ECHOGET设置默认值。用户可以继续的唯一方法是键入新选项或按ENTER键使用最后一个选项。我是老派的Autocad,我经常使用空格键进行输入。如何编程LISP以使用空格键或ENTER键接受这些默认值?谢谢
迈克
你是说(GETSTRING)?
请参阅(getstring)的文档,了解如何在ENTER时允许空间。 没有看到你的代码。。。考虑一下这个快速编写的示例:
(defun c:FOO (/ option)
(initget "Yes No")
(if (or (/= nil
(setq option
(getkword "\nBow ties are cool, right? <Yes>: "
)
)
)
(setq option "Yes")
)
(if (= "Yes" option)
(prompt "\n** Bow ties are cool ** ")
(prompt "\n** Bow ties ARE cool (even if you don't think so) ** ")
)
)
(princ)
)
我知道如何在“\n”之前添加T…但当我点击空格键时,它只是在命令行中添加了一个空格。我只想让它充当ENTER。
(setq choice2 (strcase (Echoget2 2xtxt "\nFraming size: 2x(6), 2x(, 2x(10), 2x(12)? ")))
(cond
((= choice2 "6")
(setq 2xtxt ""))
((= choice2 "8")
(setq 2xtxt "(2x8)"))
((= choice2 "10")
(setq 2xtxt "(2x10)"))
((= choice2 "12")
(setq 2xtxt "(2x12)"))
);end cond
恕我直言,我不确定您是否会这样做,因为将非Nil“cr”参数添加到GetString函数中会阻止空格键被接受为Enter:
(setq foo (getstring ;| do not include cr argument here |; "\nEnter one word, Space bar to Enter: "))
此外,我们无法帮助您,也无法理解您忽略发布的自定义子函数(EchoGet*)的行为。
这里有一种可能实现相同结果的方法,只使用内置函数:
(initget "6 8 10 12")
(if (setq choice2 (getkword "\nFraming size: 2x... : "))
(setq 2xtxt (cond ((= "6" choice2) "(2X6)")
((= "8" choice2) "(2X8)")
((= "10" choice2) "(2X10)")
(T "(2X12)")
)
)
)
需要更多信息。 迈克,听起来你没有自己写例行公事。你知道如何编辑LISP吗?我同意这听起来好像你没有真正理解在getstring中使用t。如果例程使用getstring,那么在这之后应该有提示消息或nil,然后是提示。你看过“echoget2”函数吗?它不是LISP函数,而是包含在任何自定义代码中的函数。还有,例程不能使用getkword有什么原因吗?正如BlackBox所说,如果这还不够,你真的需要发布代码,让我们告诉你如何在这里得到你想要的。 顺便说一句,这里的代码看起来有点奇怪。看起来唯一期望的输入是一个整数,但它被视为一个字符串,甚至对其应用了strcase。这不会改变字符串中的整数。此外,没有显示任何处理与四个允许整数不匹配的输入的内容,尽管我猜想这可能发生在其他地方。如果看不到其余的代码,就很难判断到底发生了什么。 我已经有一段时间没有用LISP编写代码了。我现在才重新开始。我正在使用我的老套路的很多老部分,但似乎这些部分引起了问题。每次我在这里,我都在学习新的做事方式。太棒了。这是我以前的ECHOGET子程序。。。
(defun Echoget2 (DEFAULT2 MSG2 / TEMP2)
(setq TEMP2 (getstring T (strcat MSG2 " <<"DEFAULT2">>")))
(IF (/= "" TEMP2) TEMP2 DEFAULT2)
)
你的建议效果很好,我理解为什么。现在我只需要最后一个选择返回到命令行。
再次感谢您的专业知识和帮助。
谦恭地说,
迈克
::推测:
我认为EchoGet2是一个子函数,其中第一个参数(如果非Nil)是先前输入的值,第二个参数是使用的默认提示(当没有输入先验选项时)。
伪代码:
(defun EchoGet2 (p d)
(getstring
(if p
(strcat d " <" p ">: ")
d
)
)
)
... 这确实引入了空格键产生零的问题,而不是以前的值。也许OP能够为我们提供更多信息,以便我们能够更好地提供帮助。 BlackBox,我认为实际的输入函数应该看起来更像你展示的。唯一的问题是,OP显然有一个可更改的默认值,该默认值通过他的Echoget和setq处理。用你的方法看起来很容易完成,但如果没有他进一步的投入,我怀疑这是否值得在这一点上付出任何努力。当然,为了使其更加自动添加,默认值应该用“:”括起来,而不是使用括号。但这只是我自己的完美主义态度。
页:
[1]
2