使用UNDO命令
我编写了一些代码,在LISP运行之前在“UNDO”命令中设置“Mark”。我的程序按预期工作,但如果有人使用该程序绘制一些东西,然后决定键入“u”,然后输入enter,他们需要多次按enter键/空格键才能返回到LISP命令启动之前的状态。我的问题是,有没有办法让用户只按一次“u”键和“enter”键就可以回到程序启动之前的状态?
我知道他们可以先键入“undo”然后键入“back”,但我希望用户只需键入“u”即可。我认为我的代码应该可以工作,但实际上不行。用户必须多次按enter键才能回到起点。
有什么想法吗?
这是代码当前工作方式的一部分:
(defun getVariables ()
(command "undo" "mark")
(command "undo" "begin")
(setq temperr *error*)
(setq *error* CCerror)
(setq CColdlayer (getvar "clayer"))
(setq CColdpickbox (getvar "pickbox"))
(setq CColdcmdecho (getvar "cmdecho"))
(setq CColdosmode (getvar "osmode"))
(setq CColdorthomode (getvar "orthomode"))
(setvar "cmdecho" 0)
(setvar "osmode" 1)
)
(defun setVariables ()
(setvar "pickbox" 0)
(setvar "osmode" 0)
(setvar "blipmode" 0)
)
(defun Restore ()
(setvar "clayer" CColdlayer)
(setvar "pickbox" CColdpickbox)
(setvar "cmdecho" CColdcmdecho)
(setvar "osmode" CColdosmode)
(setvar "orthomode" CColdorthomode)
(command "undo" "end")
)
我想我已经解决了这个问题。上面的代码工作正常。我所做的是在每个不同绘图函数的末尾调用(还原)函数,而不是将其添加到调用所有其他函数以使程序工作的主函数中。。。。。如果这有道理的话。
不过,我现在遇到的新问题是,“u”命令返回到程序的开头,但命令提示符显示:
Command: U
GROUP (Lisp Expression) (Lisp Expression) (Lisp Expression) (Lisp Expression
如何隐藏即将出现的(Lisp表达式)??? 虽然有vl\uCal启动撤消组,但这是普通版本:
(defun SetUndo ()
(and (zerop (getvar "UNDOCTL"))
(command "_.UNDO" "_ALL"))
(and (= (logand (getvar "UNDOCTL") 2) 2)
(command "_.UNDO" "_CONTROL" "_ALL"))
(and (= (logand (getvar "UNDOCTL")8)
(command "_.UNDO" "_END"))
(command "_.UNDO" "_GROUP"))
那么您的*错误*应该包含:
(setqolderr *error*
*error* (lambda (msg)
(while (> (getvar "CMDACTIVE") 0)
(command))
(and (/= msg "quit / exit abort")
(princ (strcat "\nError: *** " msg " *** ")))
(and (= (logand (getvar "UNDOCTL")8)
(command "_.UNDO" "_END" "_.U"))
(restore))
谢谢你,我明天会调查的。 我也有同样的问题
我正在使用分组撤消。在我的defun函数中,我从
以下是我的*错误*函数
一切都很好,只是当我按“u”时,我感到很恼火
(Lisp表达式)多次。我无法从上面的例子中找到解决方案。任何人都可以帮助抑制这种情况吗?
页:
[1]