撤消命令问题
伙计们,我在这里发布了一个例程,用撤销选项删除对象。我在这里遇到了问题删除任何对象后,如果我按undo。。一切都回来了
我为我糟糕的英语道歉
(defun c:Test()
(setq cnt 0)
(setq x t)
(while x
(initget "Undo")
(setq sel (entsel "\nPick Object to Erase :"))
(cond
( ( = "Undo" sel)
(if (> cnt 0)
(progn
(command "_.u")
(setq cnt(1- cnt))
)
(princ "\nUndo Done.")
)
)
( ( = (Type (car sel)) 'ename)
(command "_.ERASE" (car sel) "")
)
( (not sel)
(setq x nil)
)
)
(setq cnt(1+ cnt))
)
) 我不编写lisp,但似乎需要设置UNDOCTL系统变量来强制执行所追求的行为。
如果这样做,请不要忘记在完成lisp之前将其返回到以前的值。
Dadgad是对的,上述变量可能会影响你的日常行为,但不幸的是,你不能直接影响它,因为它是只读的。
相反,尝试为每个擦除操作创建一个撤消组。
(( = (Type (car sel)) 'ename)
(command "_UNDO" "_G"
"_.ERASE" (car sel) ""
"_UNDO" "_E")
) 是的,现在很好
谢谢你Dadgad&Mircea
@我用你的参考资料更正了代码再次感谢你 (defun c:Test()
(setq cnt 0)
(setq x t)
(while x
(initget "Undo")
(setq sel (entsel "\nPick Object to Erase :"))
(cond
( ( = "Undo" sel)
(if (> cnt 0)
(progn
(command "_.u")
(setq cnt(1- cnt))
)
(princ "\nUndo Done.")
)
)
( ( = (Type (car sel)) 'ename)
(command "_UNDO" "_G"
"_.ERASE" (car sel) ""
"_UNDO" "_E")
(setq cnt(1+ cnt))
)
( (not sel)
(setq x nil)
)
)
)
) 请注意,entdel可以擦除和取消擦除图元(因为该函数只是切换图元的擦除标志;设置了擦除标志的图元仅在图形关闭时丢失)。
考虑以下示例:
(defun c:test ( / ext lst sel )
(while (null ext)
(setvar 'errno 0)
(if lst (initget "Undo"))
(setq sel (entsel (strcat "\nPick Object to Erase" (if lst " : " ": "))))
(cond
( (= 7 (getvar 'errno))
(princ "\nMissed, try again.")
)
( (= "Undo" sel)
(if lst
(progn
(entdel (car lst))
(setq lst (cdr lst))
)
)
)
( (= 'ename (type (car sel)))
(setq lst (cons (car sel) lst))
(entdel (car sel))
)
( (setq ext t) )
)
)
(princ)
)
对于最后一个实体,OOPS命令所做的就是重新打开灯光? 李,非常感谢你,每次我们都在向你学习新的东西
精确地
不客气,甘尼什 我还有一个问题
如何撤消多个对象
实例
(defun c:test ( / ext lst sel )
(while (null ext)
(setvar 'errno 0)
(if lst (initget "Undo"))
(setq sel (entsel (strcat "\nPick Object to Erase" (if lst " : " ": "))))
(cond
( (= 7 (getvar 'errno))
(princ "\nMissed, try again.")
)
( (= "Undo" sel)
(if lst
(progn
(entdel (car lst))
(setq lst (cdr lst))
)
)
)
( (= 'ename (type (car sel)))
(setq lst (cons (car sel) lst))
(setq sss (ssget "x" (list (cons 8 (cdr (assoc 8 (entget (car sel))))))))
(command "erase" sss "")
)
( (setq ext t) )
)
)
(princ)
)
页:
[1]
2