乐筑天下

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

[编程交流] 在Lisp中设置默认值

[复制链接]

20

主题

95

帖子

75

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 09:57:35 | 显示全部楼层 |阅读模式
我创建了一个简单的lisp,可以将某些对象拉伸到完工地板以上的给定高度。现在,我觉得如果它还允许用户输入与我设置的不同的地板高度,那么使用它会更好。我在这上面找不到任何东西。我想要的是,当用户启动命令时,它会显示“当前存根高度为”,其中X是默认值。因此,如果用户继续并单击CAD中的某个点,它将继续执行该命令;如果用户没有继续,则只需键入一个新数字,然后输入,然后继续执行该命令。有道理?
 
这是最初的lisp,它要求用户输入高度,就像我说的那样,很简单。
 
  1. ;;; === Stretch Stub - User Input ===
  2. ;;; Asks user for height in inches above finished floor to stretch stub
  3. ;;; Copyright 2010 Josh Merchant
  4. (defun c:sta (/)
  5. (setq coord "@0,0,")
  6. (setq height (getstring T"\nEnter stub up height in inches AFF:"))
  7. (command "stretch" "c" pause pause "" "node" pause "from" ".z" "0,0,0" "0,0,0" (strcat coord height))
  8. (princ)
  9. )
回复

使用道具 举报

51

主题

481

帖子

457

银币

后起之秀

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

铜币
262
发表于 2022-7-6 10:04:01 | 显示全部楼层
此链接可能对您有所帮助
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:08:19 | 显示全部楼层
谢谢哈桑
 
JMerch,我建议您使用getdist获得“存根高度”,然后将这个数值转换为字符串,如果您想将其与“coord”变量连接起来。
回复

使用道具 举报

20

主题

95

帖子

75

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 10:14:27 | 显示全部楼层
麻生太郎,谢谢你的链接。。。我不知道我在想什么,在我问问题之前不去李的网站。
 
李,首先感谢你网站上的教程。现在说到眼前的问题。看最后一个例子,我觉得这就是我需要走的路线(仍然使用getint)。也就是说,我无法让我的strcat读取“ans”。我也用getdist重新做了一遍,但仍然无法让它阅读。
 
  1. (defun c:sta (/)
  2. (setq coord "@0,0,")
  3. (setq *ans*
  4.    (cond
  5.      (
  6.        (getint
  7.          (strcat "\nSpecify Stub Up Height <"
  8.            (itoa
  9.              (setq *ans*
  10.                (cond ( *ans* ) ( 8 ))
  11.              )
  12.            )
  13.            ">: "
  14.          )
  15.        )
  16.      )
  17.      ( *ans* )
  18.    )
  19. )
  20. (princ)
  21. (command "stretch" "c" pause pause "" "node" pause "from" ".z" "0,0,0" "0,0,0" (strcat coord *ans*))
  22. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:21:55 | 显示全部楼层
不客气,杰默奇
 
提示:想想变量“*ans*”持有什么数据类型,以及“coord”持有什么数据类型。
回复

使用道具 举报

20

主题

95

帖子

75

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 10:25:36 | 显示全部楼层
 
好的,最初我以为接受itoa是答案,但事实并非如此。我将getint改为getstring,并尝试了另一种方法(strcat“@0,0,”*ans*)。前者奏效了。现在,我今天下午一直在努力学习你的教程(我的眼睛很紧张,大脑不再沉浸在信息中),不知道如何将8设为默认值,用户只需在“输入存根高度”出现后右键单击或按enter键。
 
  1. (defun c:sta (/)
  2. (setq coord "@0,0,")
  3. (setq *ans*
  4. (cond
  5.    (
  6.      (getstring
  7.        (strcat "\nEnter Stub Up Height <"
  8.          (setq *ans*
  9.              (cond ( *ans* ) ( 8 ))
  10.          )
  11.          ">: "
  12.        )
  13.      )
  14.    )
  15.    ( *ans* )
  16. )
  17. )
  18. (princ)
  19. (command "stretch" "c" pause pause "" "node" pause "from" ".z" "0,0,0" "0,0,0" (strcat coord *ans*))
  20. )
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 10:32:37 | 显示全部楼层
getstring-->“8”
getint------>8
 
命令:(setq x(getint))

命令:(setq x(getstring))
""
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:33:38 | 显示全部楼层
如果要使用getint,需要记住变量*ans*包含一个整数。如果要继续使用将其与“坐标”字符串连接的方法,则需要进行转换:
 
这可能看起来有点多余,正如你可能会说的——“为什么不把*ans*存储为字符串?”则不需要在提示符/命令中进行转换。但是,在提示输入整数时,将默认值存储为整数似乎更符合逻辑。
 
然而,在这种情况下,我倾向于使用getdist:
 
每个人都有一个
 
105743lrc23ssyrs3jzw02.jpg
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 10:37:55 | 显示全部楼层
所以你给了李一个建议,有一段时间我觉得你只需要给点提示就可以了
新年快乐,我的朋友
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:47:02 | 显示全部楼层
 
事实上,我不能再让他受苦了
 
 
对你也是
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 00:31 , Processed in 1.350191 second(s), 74 queries .

© 2020-2025 乐筑天下

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