我编写了一些代码,在LISP运行之前在“UNDO”命令中设置“Mark”。我的程序按预期工作,但如果有人使用该程序绘制一些东西,然后决定键入“u”,然后输入enter,他们需要多次按enter键/空格键才能返回到LISP命令启动之前的状态。
我的问题是,有没有办法让用户只按一次“u”键和“enter”键就可以回到程序启动之前的状态?
我知道他们可以先键入“undo”然后键入“back”,但我希望用户只需键入“u”即可。我认为我的代码应该可以工作,但实际上不行。用户必须多次按enter键才能回到起点。
有什么想法吗?
这是代码当前工作方式的一部分:
- [color=red]([color=royalblue]defun[/color][/color] getVariables [color=red]()[/color]
- [color=red]([/color][color=royalblue]command[/color] [color=magenta]"undo" "mark"[/color][color=red])[/color]
- [color=red]([/color][color=royalblue]command[/color] [color=magenta]"undo" "begin"[/color][color=red]) [/color]
- [color=red]([/color][color=royalblue]setq[/color] temperr *error*[color=red])[/color]
- [color=red]([/color][color=royalblue]setq[/color] *error* CCerror)
- [color=red]([/color][color=royalblue]setq[/color] CColdlayer [color=red]([/color][color=royalblue]getvar[/color][color=magenta] "clayer"[/color][color=red]))[/color]
- [color=red]([/color][color=royalblue]setq[/color] CColdpickbox [color=red] ([/color][color=royalblue]getvar[/color][color=magenta] "pickbox"[/color][color=red]))[/color]
- [color=red]([/color][color=royalblue]setq[/color] CColdcmdecho [color=red]([/color][color=royalblue]getvar[/color] [color=magenta]"cmdecho"[/color][color=red]))[/color]
- [color=red]([/color][color=royalblue]setq[/color] CColdosmode [color=red]([/color][color=royalblue]getvar[/color] [color=magenta]"osmode"[/color]))
- [color=red]([/color][color=royalblue]setq[/color] CColdorthomode [color=red]([/color][color=royalblue]getvar[/color] [color=magenta]"orthomode"[/color][color=red]))[/color]
- [color=red]([/color][color=royalblue]setvar[/color] [color=magenta]"cmdecho"[/color] [color=seagreen]0[/color][color=red])[/color]
- [color=red]([/color][color=royalblue]setvar[/color] [color=magenta]"osmode"[/color] [color=seagreen]1[/color][color=red])[/color]
- [color=red] )[/color]
- [color=red]([/color][color=royalblue]defun[/color] setVariables [color=red]()[/color]
- [color=red]([/color][color=royalblue]setvar[/color] [color=magenta]"pickbox"[/color] [color=seagreen]0[/color][color=red]) [/color]
- [color=red]([/color][color=royalblue]setvar[/color][color=magenta] "osmode"[/color] [color=seagreen]0[/color][color=red])[/color]
- [color=red]([/color][color=royalblue]setvar[/color] [color=magenta]"blipmode"[/color] [color=seagreen]0[/color][color=red])[/color]
- [color=red])[/color]
- [color=red]([/color][color=royalblue]defun[/color] Restore [color=red]()[/color]
- [color=red]([/color][color=royalblue]setvar[/color] [color=magenta]"clayer"[/color] CColdlayer[color=red])[/color]
- [color=red]([/color][color=royalblue]setvar[/color][color=magenta] "pickbox"[/color] CColdpickbox[color=red])[/color]
- [color=red]([/color][color=royalblue]setvar [/color][color=magenta]"cmdecho"[/color] CColdcmdecho[color=red])[/color]
- [color=red]([/color][color=royalblue]setvar[/color] [color=magenta]"osmode"[/color] CColdosmode[color=red])[/color]
- [color=red]([/color][color=royalblue]setvar[/color] [color=magenta]"orthomode"[/color] CColdorthomode[color=red])[/color]
- [color=red]([/color][color=royalblue]command[/color][color=magenta] "undo" "end"[/color][color=red])[/color]
- [color=red])[/color]
|