解决方案:
 - ;;命令反应器
- (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)
- )
|