tianying307 发表于 2020-8-9 14:14:35

调用(*push-error-using-command*)前无法从 *error* 调用(command)问题解决方法

本帖最后由 tianying307 于 2020-8-9 14:18 编辑

在使用插件时,按esc经常出现调用(*push-error-using-command*)前无法从 *error* 调用(command)提示,这是因为高版本cad(大概从2014或者2015版本有所变化吧,本人未考证,所以不确定)函数变化导致,高版本cad的error函数不允许使用command命令,但是可以用command-s命令代替
(defun c:tt ()(setq      sysvarlst (mapcar (function (lambda (n) (list 'setvar n (getvar n)))) ;;先取改变前的变量名和值保存
                        '("osmode" "cmdecho" "orthomode" "osnapcoord" "textsize" "clayer")
                  )
)
(clerrr)
(setvar "osmode" 0)    ;改变变量值
   (alert "11")
   (getpoint "\n输入")
    )
(mapcar 'eval sysvarlst) ;;恢复变量值
(setq *error* olderr)
)


(defun clerrr()
(defun *myerr* (msg)
    (mapcar 'eval sysvarlst) ;;恢复变量值 
   (alert "\n错误处理成功!")
    (princ msg)
    (setvar "qaflags" 0)
    (command-s "undo" "e");用command-s代替了command
    (setq *error* olderr)
)
(setq      olderr      *error*
      *error*      *myerr*
)
);感谢wen1235提供的解答

;借鉴于明经http://bbs.mjtd.com/forum.php?mod=viewthread&tid=180544&highlight=error

magicheno 发表于 2021-9-21 22:08:06

学习了~~~~@
页: [1]
查看完整版本: 调用(*push-error-using-command*)前无法从 *error* 调用(command)问题解决方法