szx025 发表于 2017-9-12 10:15:35

记住上次输入的字符串

(setq txt1 (getstring "\n 请输入轴线号前缀<1->: "))
   (if    (= txt1 "")
      (setq txt1 "1-")
    )
请教一下,这里的语句想改为如下效果该怎么写
当输入2-后,下次再执行到这里是,命令栏就显示“请输入轴线号前缀<2->”直接按回车就行,而不是命令栏还是显示“请输入轴线号前缀<1->”需要再次输入2-


szx025 发表于 2017-9-13 10:00:51

谢谢楼上的高手,
(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:10:22

本帖最后由 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存在但不是字符串,代码还可以运行,但结果却是错的。




自贡黄明儒 发表于 2017-9-12 15:49:49

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)
)

vectra 发表于 2017-9-12 11:34:29

你当然是需要另一个变量来保存上次输入的值啊

自贡黄明儒 发表于 2017-9-12 11:54:16

(if (not txt1)
(setq txt1 "-1")
)
(setq txt1 (getstring (strcat "\n 请输入轴线号前缀<" txt1 " >: ")))
(if (= txt1 "")
(setq txt1 "1-")
)

vectra 发表于 2017-9-12 14:27:12

目测代码运行的结果是当你输入空白,想要重复上次输入的值,得到的却是确定的 "1-"。

szx025 发表于 2017-9-12 14:30:11

自贡黄明儒 发表于 2017-9-12 11:54


黄大师,(setq txt1 (getstring (strcat "\n 请输入轴线号前缀<" txt1 " >: ")))这句好像有点问题,第一次输入2-没有问题,再次执行程序是,命令栏出现“请输入轴线号前缀<2- >:”,按回车,这是txt1不是我想要的2-,而是1-

llsheng_73 发表于 2017-9-12 19:45:18

(setq txt(getstring(strcat"请输入轴线号前缀<"(setq a(if(> txt"")txt"1-"))">"))txt(if(=""txt)a txt))

szx025 发表于 2017-9-13 08:09:10

自贡黄明儒 发表于 2017-9-12 15:49
(if (not txt2)
(setq txt2 "-1")
)


黄大师,不好意思,你的这个还是有点问题,因为(setq txt1 (getstring (strcat "\n 请输入轴线号前缀<" txt2 " >: ")))这里如果输入2-,txt1的返回值就不是"",所以2-就不会复制给txt2
页: [1] 2
查看完整版本: 记住上次输入的字符串