BLOACH85 发表于 2022-7-6 14:59:59

关于默认值的问题。

这就是我所拥有的,但是当例程运行时,除了我的默认距离值之外,一切都正常。为什么会这样?
(setq dist (getreal "\nWhat is the Offset Distance? [.083/0.95] <0.83> :"))
我只需要将0.83设为默认值,这样就可以消除击键,直到我必须使用不同的数字。

CarlB 发表于 2022-7-6 15:10:48

如果用户点击“回车”,dist将为“零”。因此,在该行之后使用:
(if(非dist)(setq dist 0.83))

David Bethel 发表于 2022-7-6 15:15:47

在调用(getdist)之前,您可能还需要研究调用(initget)。它可以强制一个正的非零值(偏移量需要这个值)-大卫

BLOACH85 发表于 2022-7-6 15:19:49

initget在那里已经就绪,设置为1 2 4 64,我尝试了(if(not dist)(setq dist 0.83))
仍然返回需要一个数值错误

JohnM 发表于 2022-7-6 15:27:10

请张贴您的initget是如何设置的

JohnM 发表于 2022-7-6 15:31:40

抱歉,我发布到quick,你的initget不应该有1,因为它
防止用户通过只输入ENTER来响应请求。因此,它会循环,直到得到响应或推送逃逸。

David Bethel 发表于 2022-7-6 15:40:21

您需要将1放入(initget)。它强制输入-大卫

BLOACH85 发表于 2022-7-6 15:47:07

看,思考总是让我变得内敛。谢谢大家!但是,既然你在这里并且知道的比我多,那么你如何让它在下次调用命令时保持其先前的值呢?

JohnM 发表于 2022-7-6 15:48:37

保留值可以通过以下两种方式之一实现
[列表]
[*]将变量设置为全局变量,使其在AutoCAD会话仍处于打开状态时保持活动状态,但在AutoCAD关闭时将失去其值。
将值写入文件并让程序访问它(这是首选)

lpseifert 发表于 2022-7-6 15:59:48

这里有一个方法

(defun test (/ dist)
(if (null *dist*)
(setq *dist* 0.83)
)
(setq dist (getreal (strcat "\n What is the offset distance?: <" (rtos *dist* 2 2) ">: "))
)
(if (not dist)
(setq dist *dist*)
(setq *dist* dist)
)
(alert (strcat "\nThe value of *dist* is " (rtos *dist* 2 2)
      "\nThe value or dist is " (rtos dist 2 2)))
)
页: [1] 2
查看完整版本: 关于默认值的问题。