[讨论]关于多重复制及其撤销的问题
<p>04版的多重复制要输入关键字M,撤销的时候,在同一视口完成的操作算作一步。<br/>06版默认为多重复制,撤销的时候是一下全部撤销。<br/>我想要实现逐步撤销,编了两个小程序,都有不足之处,望高手能够解决,关键是如何实现在键盘输入空格和回车终止程序的问题。</p><p>;改进的多重复制,空格或回车可以退出,但是复制过程中不能动态显示复制对象。<br/>(defun C:CC ()<br/> (setq css (ssget))<br/> (setq pt0 (getpoint "指定基点"))<br/> (setq pt t)<br/> (while pt<br/> (setq pt (getpoint pt0 "\n指定目标点"))<br/> (command "copy" css "" pt0 pt)<br/> )<br/> (prin1)<br/>)</p><p>;改进的多重复制,只能按ESC退出,空格或回车仍然继续复制。<br/>(defun C:CCC ()<br/> (setq css (ssget))<br/> (setq pt0 (getpoint "指定基点"))<br/> (setq pt t)<br/> (while pt<br/> (command "copy" css "" pt0 pause)<br/> )<br/> (prin1) <br/>)</p> 帮你转到LISP版块 无预览.可以一步步undo(defun c:c ( / aa bb copycl)
(princ "\n选择要拷贝的物体: ")
(if (setq copycl (ssget ":L"))
(progn
(setq bb (getpoint "\n指定基点:"))
(while 1;(/= (type aa) 'LIST)
(initget 2 "U")
(setq aa (getpoint "\n指定基点或位移或[放弃(U)]:"))
(cond ((= (type aa) 'STR)
(command "undo" "")
)
((= (type aa) 'list)
(command "COPY" copycl "" bbaa)
)
(T (exit))
)
)
)
)
) <p>感谢明总移帖,也谢谢楼上这位热心的大哥。</p>
页:
[1]