乐筑天下

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

[编程交流] 提示输入默认值

[复制链接]

53

主题

302

帖子

249

银币

后起之秀

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

铜币
265
发表于 2022-7-5 15:52:31 | 显示全部楼层 |阅读模式
大家好,
我想将一个值(实数)附加到变量作为默认值,并要求用户接受它或输入其他值。如何使用alisp/vlisp实现它?。
 
提前感谢。
 
芦荟
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 16:00:53 | 显示全部楼层
你好
例如:
  1. (or *val* (setq *val* 1.0))
  2. (setq *val*
  3.       (cond ((getdist (strcat "\nSpecify Offset distance " (strcat "< " (rtos *val* 2 4) " > :"))))
  4.             (*val*)
  5.             )
  6.      )
回复

使用道具 举报

53

主题

302

帖子

249

银币

后起之秀

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

铜币
265
发表于 2022-7-5 16:04:18 | 显示全部楼层
非常感谢Tharwat。
 
芦荟
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 16:09:27 | 显示全部楼层
欢迎随时光临。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 16:13:50 | 显示全部楼层
您可能会发现本教程很有用。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:15:30 | 显示全部楼层
使用带有用户输入的dcl示例
 
  1. ; Input  Dialog box with variable title
  2. ; multiple lines of dcl input supported
  3. ; add extra lines if required by copying code defun
  4. ; By Alan H 2015
  5. (vl-load-com)
  6. ; 1 line dcl
  7. ; sample code (ah:getval1 "Line 1" 5 4 "-")
  8. (defun AH:getval1 (title width limit def1 / fo fname)
  9. ; you can hard code a directory if you like for dcl file
  10. ;(setq fo (open (setq fname (vl-filename-mktemp "" "" ".dcl")) "w"))
  11. (setq fo (open (setq fname "c:\\acadtemp\\getval.dcl") "w"))
  12. (write-line "ddgetval : dialog {" fo)
  13. (write-line " : row {" fo)
  14. (write-line ": edit_box {" fo)
  15. (write-line (strcat "    key = "  (chr 34) "key1" (chr 34) ";") fo)
  16. (write-line  (strcat " label = "  (chr 34) title (chr 34) ";"  )   fo)
  17. ; these can be replaced with shorter value etc
  18. (write-line (strcat "     edit_width = " (rtos width 2 0) ";" ) fo)
  19. (write-line (strcat "     edit_limit = " (rtos limit 2 0) ";" ) fo)
  20. (write-line "   is_enabled = true;" fo)
  21. (write-line "    }" fo)
  22. (write-line "  }" fo)
  23. (write-line "ok_only;}" fo)
  24. (close fo)
  25. (setq dcl_id (load_dialog  fname))
  26. ; pt is a list 2 numbs -1 -1 centre ('(20 20))
  27. ;(not (new_dialog "test" dch "" *screenpoint*))
  28. (if (not (new_dialog "ddgetval" dcl_id))
  29. (exit))
  30. (set_tile "key1" (setq val1 def1))
  31. (action_tile "key1" "(setq val1 $value)")
  32. (mode_tile "key1" 3)
  33. (start_dialog)
  34. (done_dialog)
  35. (unload_dialog dcl_id)
  36. ; returns the value of val1 as a string
  37. (vl-file-delete fname)
  38. ) ; defungetval1

 
  1. (if (not ah:getval1)(load "getval1"))
  2. (ah:getval1 "Enter a value" 5 4 "6")

165234f25iuii9iwu4w4a5.jpg
GETVALS3.lsp
回复

使用道具 举报

12

主题

44

帖子

32

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-5 16:19:17 | 显示全部楼层
我正在寻找一种方法来做到这一点,谢谢阿洛伊的提问,并感谢所有的答案!
我对“cond”的说法感到困惑。第一个条件以两个括号开始,我找不到解释。我当然是必需的,因为我用简单的括号尝试了代码,但没有成功。但为什么需要?
 
顺便说一句,很高兴了解全局变量的符号。在编程时,我总是尝试使用好习惯,但我是一个自学者,所以没有人教我哪些好习惯是有的。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 16:23:52 | 显示全部楼层
 
你可以阅读这篇文章来了解原因。
回复

使用道具 举报

12

主题

44

帖子

32

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-5 16:29:20 | 显示全部楼层
我会试着用英语输入我从示例代码中读到的内容,如果我错了,你会告诉我,好吗?然后,我想我的怀疑会更清楚。
  1. (cond ;if any of the following conditions is true, here's what will happen
  2. ((= s "Y") 1) ;if s equals "Y", then it'll return 1
  3. ((= s "y") 1) ;if s equals "y", then it'll return 1
  4. ((= s "N") 0) ;if s equals "N", then it'll return 1
  5. ((= s "n") 0) ;if s equals "n", then it'll return 1
  6. (t nil); if none of the above is true I'll test if "true" is true (it'll be) and return "nil"
  7. )

您可以看到,在提供的示例中,第二个括号用于测试条件。当我读到这篇文章时,我可以让一个全局变量为true或nil,然后写下如下内容:
 
  1. (cond
  2. (*givenvar* returnVal) ;if the variable is a valid value, return "returnVal"
  3. (t defaulReturnVal) ;otherwise, return "defaulReturnVal"
  4. )

 
现在,对于您的代码,如果条件为true,则没有设置值,并且在默认条件下没有测试(即使在“true”为true时进行测试)。它更简洁,看起来更聪明。我想了解它是如何工作的。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 16:32:33 | 显示全部楼层
根据文件:
 
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 13:08 , Processed in 0.417292 second(s), 74 queries .

© 2020-2025 乐筑天下

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