能不能将移动后的物体复制到移动前的位置?
有时候会不小心将复制的快捷键按成移动,这时往往通过撤销,然后重新找基点复制,感觉好麻烦,在误将复制弄成移动后能不能通过程序把移动的图元复制到之前的位置? 解决方案:;;命令反应器
(or *cmdvlr*
(setq *cmdvlr* (vlr-command-reactor
nil
'((:vlr-commandWillStart . cmdstart))
)
)
)
;;数据库反应器
(or *acdbvlr*
(setq *acdbvlr* (vlr-acdb-reactor
nil
'((:VLR-objectModified . acdbstart))
)
)
)
;;命令开始反应器回调函数
(defun cmdstart (vlr lst)
(if (= "MOVE" (car lst))
(setq *MOVE_Start* t ;_ 设置启动MOVE命令标志
*MOVE_Obj* nil ;_ 清空MOVE的对象图元名列表
)
)
)
;;数据库反应器回调函数
(defun acdbstart (vlr obj)
(if *MOVE_Start*
(setq *MOVE_Obj*
(append *MOVE_Obj* (mapcar 'entget (cdr obj))) ;_ 移动对象图元名列表
)
)
)
;;用此命令实现复制移动的图元
(defun c:bakmove (/ cmdecho)
(setq cmdecho (getvar 'cmdecho))
(setvar 'cmdecho 0)
(if *MOVE_Obj*
(progn
(command "undo" "")
(foreach a *MOVE_Obj*
(entmake a)
)
)
)
(setq *MOVE_Obj* nil)
(setvar 'cmdecho cmdecho)
(princ)
) 自己顶一下 基础操作要加强,CAD默认上一次选择为P,这样不需要再次选择物体,还有建议修改快捷键。 tianquan3 发表于 2013-1-27 15:55 static/image/common/back.gif
基础操作要加强,CAD默认上一次选择为P,这样不需要再次选择物体,还有建议修改快捷键。
用p响应这个我知道,我习惯将移动和复制快捷键放在相邻的位置 本帖最后由 Gu_xl 于 2013-1-27 18:45 编辑
使用反应器,应改可以实现吧! Gu_xl 发表于 2013-1-27 18:21 static/image/common/back.gif
使用反应器,应改可以实现吧!
问题解决了,效果非常好!谢谢Gu_xl 版主!
页:
[1]