记住上次输入的字符串
(setq txt1 (getstring "\n 请输入轴线号前缀<1->: "))(if (= txt1 "")
(setq txt1 "1-")
)
请教一下,这里的语句想改为如下效果该怎么写
当输入2-后,下次再执行到这里是,命令栏就显示“请输入轴线号前缀<2->”直接按回车就行,而不是命令栏还是显示“请输入轴线号前缀<1->”需要再次输入2-
谢谢楼上的高手,
(if (= *txtt1 nil)
(setq *txtt1 "1-")
)
(setq txt1 (getstring (strcat "\n 请输入轴线号前缀<" *txtt1 " >: ")))
(if (= txt1 "")
(setq txt1 *txtt1)
(setq *txtt1 txt1)
)
完整的程序 本帖最后由 ll_j 于 2017-9-13 09:14 编辑
szx025 发表于 2017-9-13 08:09
黄大师,不好意思,你的这个还是有点问题,因为(setq txt1 (getstring (strcat "\n 请输入轴线号前缀: ") ...
这样:(if (not txt2);txt2是需要的那个保留值变量,为空则赋初始值
(setq txt2 "-1")
)
(setq txt1 (getstring (strcat "\n 请输入轴线号前缀<" txt2 " >: ")))
(if (/= txt1 "") ;非空输入?
(setqtxt2 txt1) ;非空则把此值传送给保留的变量
(setq txt1 txt2) ;否则则把保留的变量提出来给txt1
)
黄大师的代码漏了最后一个提出来的赋值。
顺便说一下,在这段代码中,txt1一般是局部变量,而txt2则是全局变量,所以为了避免出现变量冲突,最好把txt2加一点特征来区别,比如加一个前缀什么的,本人的习惯方法是:程序名:变量名,比如程序是abc.lsp,这里的全局变量可以用abc:txt2。
区别全局变量的好处还有,可以少一点判断,比如本段代码的最初判断,如果txt2存在但不是字符串,代码还可以运行,但结果却是错的。
szx025 发表于 2017-9-12 14:30
黄大师,(setq txt1 (getstring (strcat "\n 请输入轴线号前缀: ")))这句好像有点问题,第一次输入2-没有 ...
(if (not txt2)
(setq txt2 "-1")
)
(setq txt1 (getstring (strcat "\n 请输入轴线号前缀<" txt2 " >: ")))
(if (/= txt1 "")
(setqtxt2 txt1)
) 你当然是需要另一个变量来保存上次输入的值啊 (if (not txt1)
(setq txt1 "-1")
)
(setq txt1 (getstring (strcat "\n 请输入轴线号前缀<" txt1 " >: ")))
(if (= txt1 "")
(setq txt1 "1-")
) 目测代码运行的结果是当你输入空白,想要重复上次输入的值,得到的却是确定的 "1-"。 自贡黄明儒 发表于 2017-9-12 11:54
黄大师,(setq txt1 (getstring (strcat "\n 请输入轴线号前缀<" txt1 " >: ")))这句好像有点问题,第一次输入2-没有问题,再次执行程序是,命令栏出现“请输入轴线号前缀<2- >:”,按回车,这是txt1不是我想要的2-,而是1- (setq txt(getstring(strcat"请输入轴线号前缀<"(setq a(if(> txt"")txt"1-"))">"))txt(if(=""txt)a txt)) 自贡黄明儒 发表于 2017-9-12 15:49
(if (not txt2)
(setq txt2 "-1")
)
黄大师,不好意思,你的这个还是有点问题,因为(setq txt1 (getstring (strcat "\n 请输入轴线号前缀<" txt2 " >: ")))这里如果输入2-,txt1的返回值就不是"",所以2-就不会复制给txt2
页:
[1]
2