乐筑天下

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

[编程交流] 空格键作为enter键

[复制链接]

22

主题

55

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
110
发表于 2022-7-6 06:22:10 | 显示全部楼层 |阅读模式
我有一个例程,通过STRCASE等向用户提问。我使用ECHOGET设置默认值。用户可以继续的唯一方法是键入新选项或按ENTER键使用最后一个选项。我是老派的Autocad,我经常使用空格键进行输入。如何编程LISP以使用空格键或ENTER键接受这些默认值?
 
谢谢
迈克
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

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

铜币
362
发表于 2022-7-6 06:26:09 | 显示全部楼层
 
你是说(GETSTRING)?
请参阅(getstring)的文档,了解如何在ENTER时允许空间。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 06:30:44 | 显示全部楼层
没有看到你的代码。。。考虑一下这个快速编写的示例:
 
  1. (defun c:FOO (/ option)
  2. (initget "Yes No")
  3. (if (or (/= nil
  4.              (setq option
  5.                     (getkword "\nBow ties are cool, right? [Yes/No]<Yes>: "
  6.                     )
  7.              )
  8.          )
  9.          (setq option "Yes")
  10.      )
  11.    (if (= "Yes" option)
  12.      (prompt "\n** Bow ties are cool ** ")
  13.      (prompt "\n** Bow ties ARE cool (even if you don't think so) ** ")
  14.    )
  15. )
  16. (princ)
  17. )
回复

使用道具 举报

22

主题

55

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
110
发表于 2022-7-6 06:32:42 | 显示全部楼层
我知道如何在“\n”之前添加T…但当我点击空格键时,它只是在命令行中添加了一个空格。我只想让它充当ENTER。
 
  1. (setq choice2 (strcase (Echoget2 2xtxt "\nFraming size: 2x(6), 2x(, 2x(10), 2x(12)? ")))
  2.        (cond
  3.            ((= choice2 "6")
  4.                (setq 2xtxt ""))
  5.            ((= choice2 "8")
  6.                (setq 2xtxt "(2x8)"))
  7.            ((= choice2 "10")
  8.                (setq 2xtxt "(2x10)"))
  9.            ((= choice2 "12")
  10.                (setq 2xtxt "(2x12)"))
  11.        );end cond

 
 
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 06:36:53 | 显示全部楼层
 
恕我直言,我不确定您是否会这样做,因为将非Nil“cr”参数添加到GetString函数中会阻止空格键被接受为Enter:
 
  1. (setq foo (getstring [color="#2e8b57"];| do not include cr argument here |;[/color] "\nEnter one word, Space bar to Enter: "))

 
 
 
此外,我们无法帮助您,也无法理解您忽略发布的自定义子函数(EchoGet*)的行为。
 
这里有一种可能实现相同结果的方法,只使用内置函数:
  1. (initget "6 8 10 12")
  2. (if (setq choice2 (getkword "\nFraming size: 2x... [6/8/10/12]: "))
  3. (setq 2xtxt (cond ((= "6" choice2) "(2X6)")
  4.                    ((= "8" choice2) "(2X8)")
  5.                    ((= "10" choice2) "(2X10)")
  6.                    (T "(2X12)")
  7.              )
  8. )
  9. )

 
需要更多信息。
回复

使用道具 举报

2

主题

389

帖子

387

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 06:38:25 | 显示全部楼层
迈克,听起来你没有自己写例行公事。你知道如何编辑LISP吗?我同意这听起来好像你没有真正理解在getstring中使用t。如果例程使用getstring,那么在这之后应该有提示消息或nil,然后是提示。你看过“echoget2”函数吗?它不是LISP函数,而是包含在任何自定义代码中的函数。还有,例程不能使用getkword有什么原因吗?正如BlackBox所说,如果这还不够,你真的需要发布代码,让我们告诉你如何在这里得到你想要的。
回复

使用道具 举报

2

主题

389

帖子

387

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 06:42:54 | 显示全部楼层
顺便说一句,这里的代码看起来有点奇怪。看起来唯一期望的输入是一个整数,但它被视为一个字符串,甚至对其应用了strcase。这不会改变字符串中的整数。此外,没有显示任何处理与四个允许整数不匹配的输入的内容,尽管我猜想这可能发生在其他地方。如果看不到其余的代码,就很难判断到底发生了什么。
回复

使用道具 举报

22

主题

55

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
110
发表于 2022-7-6 06:45:43 | 显示全部楼层
我已经有一段时间没有用LISP编写代码了。我现在才重新开始。我正在使用我的老套路的很多老部分,但似乎这些部分引起了问题。每次我在这里,我都在学习新的做事方式。太棒了。这是我以前的ECHOGET子程序。。。
 
  1. (defun Echoget2 (DEFAULT2 MSG2 / TEMP2)
  2.    (setq TEMP2 (getstring T (strcat MSG2 " <<"DEFAULT2">>")))
  3.     (IF (/= "" TEMP2) TEMP2 DEFAULT2)
  4. )

 
你的建议效果很好,我理解为什么。现在我只需要最后一个选择返回到命令行。
 
再次感谢您的专业知识和帮助。
 
谦恭地说,
迈克
 
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 06:50:25 | 显示全部楼层
 
::推测:
 
我认为EchoGet2是一个子函数,其中第一个参数(如果非Nil)是先前输入的值,第二个参数是使用的默认提示(当没有输入先验选项时)。
 
伪代码:
  1. (defun EchoGet2 (p d)
  2. (getstring
  3.    (if p
  4.      (strcat d " <" p ">: ")
  5.      d
  6.    )
  7. )
  8. )

 
 
... 这确实引入了空格键产生零的问题,而不是以前的值。也许OP能够为我们提供更多信息,以便我们能够更好地提供帮助。
回复

使用道具 举报

2

主题

389

帖子

387

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 06:52:39 | 显示全部楼层
BlackBox,我认为实际的输入函数应该看起来更像你展示的。唯一的问题是,OP显然有一个可更改的默认值,该默认值通过他的Echoget和setq处理。用你的方法看起来很容易完成,但如果没有他进一步的投入,我怀疑这是否值得在这一点上付出任何努力。当然,为了使其更加自动添加,默认值应该用“:”括起来,而不是使用括号。但这只是我自己的完美主义态度。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 17:48 , Processed in 0.454960 second(s), 83 queries .

© 2020-2025 乐筑天下

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