dianbotang 发表于 2008-10-30 02:12:00

[讨论]关于多重复制及其撤销的问题

<p>04版的多重复制要输入关键字M,撤销的时候,在同一视口完成的操作算作一步。<br/>06版默认为多重复制,撤销的时候是一下全部撤销。<br/>我想要实现逐步撤销,编了两个小程序,都有不足之处,望高手能够解决,关键是如何实现在键盘输入空格和回车终止程序的问题。</p><p>;改进的多重复制,空格或回车可以退出,但是复制过程中不能动态显示复制对象。<br/>(defun C:CC ()<br/>&nbsp; (setq css (ssget))<br/>&nbsp; (setq pt0 (getpoint "指定基点"))<br/>&nbsp; (setq pt t)<br/>&nbsp; (while pt<br/>&nbsp;&nbsp;&nbsp; (setq pt (getpoint pt0 "\n指定目标点"))<br/>&nbsp;&nbsp;&nbsp; (command "copy" css "" pt0 pt)<br/>&nbsp; )<br/>&nbsp; (prin1)<br/>)</p><p>;改进的多重复制,只能按ESC退出,空格或回车仍然继续复制。<br/>(defun C:CCC ()<br/>&nbsp; (setq css (ssget))<br/>&nbsp; (setq pt0 (getpoint "指定基点"))<br/>&nbsp; (setq pt t)<br/>&nbsp; (while pt<br/>&nbsp;&nbsp;&nbsp; (command "copy" css "" pt0 pause)<br/>&nbsp; )<br/>&nbsp; (prin1)&nbsp; <br/>)</p>

mccad 发表于 2008-11-10 22:20:00

帮你转到LISP版块

xshrimp 发表于 2008-11-11 22:52:00

无预览.可以一步步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))
      )
      )
      
   )      
   )
)

dianbotang 发表于 2008-11-13 07:31:00

<p>感谢明总移帖,也谢谢楼上这位热心的大哥。</p>
页: [1]
查看完整版本: [讨论]关于多重复制及其撤销的问题