明经CAD社区

 找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 434|回复: 12

[提问] 记住上次输入的字符串

[复制链接]
发表于 2017-9-12 10:15 | 显示全部楼层 |阅读模式
(setq txt1 (getstring "\n 请输入轴线号前缀<1->: "))
   (if    (= txt1 "")
      (setq txt1 "1-")
    )
请教一下,这里的语句想改为如下效果该怎么写
当输入2-后,下次再执行到这里是,命令栏就显示“请输入轴线号前缀<2->”直接按回车就行,而不是命令栏还是显示“请输入轴线号前缀<1->”需要再次输入2-


发表于 2017-9-12 11:34 | 显示全部楼层
你当然是需要另一个变量来保存上次输入的值啊
发表于 2017-9-12 11:54 | 显示全部楼层
  1. (if (not txt1)
  2.   (setq txt1 "-1")
  3. )
  4. (setq txt1 (getstring (strcat "\n 请输入轴线号前缀<" txt1 " >: ")))
  5. (if (= txt1 "")
  6.   (setq txt1 "1-")
  7. )
发表于 2017-9-12 14:27 | 显示全部楼层
目测代码运行的结果是当你输入空白,想要重复上次输入的值,得到的却是确定的 "1-"。
 楼主| 发表于 2017-9-12 14:30 | 显示全部楼层

黄大师,(setq txt1 (getstring (strcat "\n 请输入轴线号前缀<" txt1 " >: ")))这句好像有点问题,第一次输入2-没有问题,再次执行程序是,命令栏出现“请输入轴线号前缀<2- >:”,按回车,这是txt1不是我想要的2-,而是1-
发表于 2017-9-12 15: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 "")
  (setq  txt2 txt1)
)
发表于 2017-9-12 19:45 | 显示全部楼层
  1. (setq txt(getstring(strcat"请输入轴线号前缀<"(setq a(if(> txt"")txt"1-"))">"))txt(if(=""txt)a txt))
 楼主| 发表于 2017-9-13 08:09 | 显示全部楼层
自贡黄明儒 发表于 2017-9-12 15:49
(if (not txt2)
  (setq txt2 "-1")
)

黄大师,不好意思,你的这个还是有点问题,因为(setq txt1 (getstring (strcat "\n 请输入轴线号前缀<" txt2 " >: ")))这里如果输入2-,txt1的返回值就不是"",所以2-就不会复制给txt2
发表于 2017-9-13 09:10 | 显示全部楼层
本帖最后由 ll_j 于 2017-9-13 09:14 编辑
szx025 发表于 2017-9-13 08:09
黄大师,不好意思,你的这个还是有点问题,因为(setq txt1 (getstring (strcat "\n 请输入轴线号前缀: ") ...

这样:
  1. (if (not txt2)  ;txt2是需要的那个保留值变量,为空则赋初始值
  2.   (setq txt2 "-1")
  3. )
  4. (setq txt1 (getstring (strcat "\n 请输入轴线号前缀<" txt2 " >: ")))
  5. (if (/= txt1 "")    ;非空输入?
  6.   (setq  txt2 txt1)    ;非空则把此值传送给保留的变量
  7.   (setq txt1 txt2)     ;否则则把保留的变量提出来给txt1
  8. )



黄大师的代码漏了最后一个提出来的赋值。
顺便说一下,在这段代码中,txt1一般是局部变量,而txt2则是全局变量,所以为了避免出现变量冲突,最好把txt2加一点特征来区别,比如加一个前缀什么的,本人的习惯方法是:程序名:变量名,比如程序是abc.lsp,这里的全局变量可以用abc:txt2。
区别全局变量的好处还有,可以少一点判断,比如本段代码的最初判断,如果txt2存在但不是字符串,代码还可以运行,但结果却是错的。




 楼主| 发表于 2017-9-13 10:00 | 显示全部楼层
谢谢楼上的高手,
(if (= *txtt1 nil)
  (setq *txtt1 "1-")
)
(setq txt1 (getstring (strcat "\n 请输入轴线号前缀<" *txtt1 " >: ")))
(if (= txt1 "")
  (setq txt1 *txtt1)
  (setq *txtt1 txt1)
)
完整的程序
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号  
©2000-2017 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2017-11-23 04:26 , Processed in 0.236921 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表