在Lisp中设置默认值
我创建了一个简单的lisp,可以将某些对象拉伸到完工地板以上的给定高度。现在,我觉得如果它还允许用户输入与我设置的不同的地板高度,那么使用它会更好。我在这上面找不到任何东西。我想要的是,当用户启动命令时,它会显示“当前存根高度为”,其中X是默认值。因此,如果用户继续并单击CAD中的某个点,它将继续执行该命令;如果用户没有继续,则只需键入一个新数字,然后输入,然后继续执行该命令。有道理?这是最初的lisp,它要求用户输入高度,就像我说的那样,很简单。
;;; === Stretch Stub - User Input ===
;;; Asks user for height in inches above finished floor to stretch stub
;;; Copyright 2010 Josh Merchant
(defun c:sta (/)
(setq coord "@0,0,")
(setq height (getstring T"\nEnter stub up height in inches AFF:"))
(command "stretch" "c" pause pause "" "node" pause "from" ".z" "0,0,0" "0,0,0" (strcat coord height))
(princ)
) 此链接可能对您有所帮助 谢谢哈桑
JMerch,我建议您使用getdist获得“存根高度”,然后将这个数值转换为字符串,如果您想将其与“coord”变量连接起来。 麻生太郎,谢谢你的链接。。。我不知道我在想什么,在我问问题之前不去李的网站。
李,首先感谢你网站上的教程。现在说到眼前的问题。看最后一个例子,我觉得这就是我需要走的路线(仍然使用getint)。也就是说,我无法让我的strcat读取“ans”。我也用getdist重新做了一遍,但仍然无法让它阅读。
(defun c:sta (/)
(setq coord "@0,0,")
(setq *ans*
(cond
(
(getint
(strcat "\nSpecify Stub Up Height <"
(itoa
(setq *ans*
(cond ( *ans* ) ( 8 ))
)
)
">: "
)
)
)
( *ans* )
)
)
(princ)
(command "stretch" "c" pause pause "" "node" pause "from" ".z" "0,0,0" "0,0,0" (strcat coord *ans*))
) 不客气,杰默奇
提示:想想变量“*ans*”持有什么数据类型,以及“coord”持有什么数据类型。
好的,最初我以为接受itoa是答案,但事实并非如此。我将getint改为getstring,并尝试了另一种方法(strcat“@0,0,”*ans*)。前者奏效了。现在,我今天下午一直在努力学习你的教程(我的眼睛很紧张,大脑不再沉浸在信息中),不知道如何将8设为默认值,用户只需在“输入存根高度”出现后右键单击或按enter键。
(defun c:sta (/)
(setq coord "@0,0,")
(setq *ans*
(cond
(
(getstring
(strcat "\nEnter Stub Up Height <"
(setq *ans*
(cond ( *ans* ) ( 8 ))
)
">: "
)
)
)
( *ans* )
)
)
(princ)
(command "stretch" "c" pause pause "" "node" pause "from" ".z" "0,0,0" "0,0,0" (strcat coord *ans*))
) getstring-->“8”
getint------>8
命令:(setq x(getint))
无
命令:(setq x(getstring))
"" 如果要使用getint,需要记住变量*ans*包含一个整数。如果要继续使用将其与“坐标”字符串连接的方法,则需要进行转换:
这可能看起来有点多余,正如你可能会说的——“为什么不把*ans*存储为字符串?”则不需要在提示符/命令中进行转换。但是,在提示输入整数时,将默认值存储为整数似乎更符合逻辑。
然而,在这种情况下,我倾向于使用getdist:
每个人都有一个
所以你给了李一个建议,有一段时间我觉得你只需要给点提示就可以了
新年快乐,我的朋友
事实上,我不能再让他受苦了
对你也是
页:
[1]
2