请问如何屏蔽“错误”提示
在一条线上加了个“移动”反应器,用“E”删除该线,然后再“U”,出现提示:“错误: 参数类型错误: 二维/三维点: nil”。但反应器好像照常可用,没发现什么问题。请问:如何才能屏蔽这个提示? 试试定义*error*函数。 既然提示出错,代码肯定有问题!还是要仔细检查下代码! 本帖最后由 原地踏步 于 2013-10-4 14:39 编辑;;
;;本程序可使文字随着直线移动、旋转等。
;;
;;========================= The Main Function ==========================
;;
(defun c:emov (/ blp cde olderr ent1 ent2 pt1 pt2 ang pt txt dst)
(setq blp (getvar "blipmode")
cde (getvar "cmdecho")
)
;;
;; Internal error handler
;;
(defun emov_err (s)
(if (/= s "Function cancelled")
(princ (strcat "\n错误: " s))
)
(setvar "blipmode" blp)
(command "_.UNDO" "_END")
(setvar "cmdecho" cde)
(setq *error* olderr)
(princ)
)
(setq olderr *error**error* emov_err)
(setvar "cmdecho" 0)
(command "_.UNDO" "_BEGIN")
(setvar "blipmode" 0)
(setq ent1 (car (entsel "\n选择直线: ")))
(if (and ent1 (= (ai_dxf 0 (setq dxf1 (entget ent1))) "LINE")) (progn
(setq txt (getstring "\n输入文字: "))
(if txt (progn
(setq pt1 (ai_dxf 10 dxf1)
pt2 (ai_dxf 11 dxf1)
ang (angle pt1 pt2)
pt (list (* 0.5 (+ (car pt1) (car pt2)))
(* 0.5 (+ (cadr pt1) (cadr pt2)))
0
)
dst (* 0.75 (getvar "textsize"))
pt (polar pt (+ ang (/ pi 2)) dst)
)
(command "text" "m" pt (getvar "textsize") (* (/ ang pi) 180) txt)
(setq ent2 (entlast))
(emov_MkRct)
))
))
(setvar "blipmode" blp)
(command "_.UNDO" "_END")
(setvar "cmdecho" cde)
(setq *error* olderr)
(princ)
)
;;
;;======================================================================
;;
;; emov_Make_Reactor_segment
;;
(defun emov_MkRct (/ entLst han)
(setq entLst (list (vlax-ename->vla-object ent1))
han (ai_dxf 5 (entget ent2))
)
(vlr-pers (vlr-object-reactor entLst han
'((:vlr-modified . emov_DoRct)))
)
)
;;
;; emov_Do_Reactor_segment
;;
(defun emov_DoRct (notifier-obj reactor-obj parameter-lst / olderr
ent1 dxf1 dxf2 pt1 pt2 pt ang dst)
;;
(defun emov_drerr (s)
(if (/= s "Function cancelled")
(princ (strcat "\n错误: " s))
)
)
;;
(setq olderr *error**error* emov_drerr)
(setq ent1 (vlax-vla-object->ename notifier-obj))
(if ent1 (progn ;阻止删除ent1时出现错误提示
(setq dxf1 (entget ent1)
dxf2 (entget (handent (vlr-data reactor-obj)))
pt1 (ai_dxf 10 dxf1)
pt2 (ai_dxf 11 dxf1)
ang (angle pt1 pt2)
pt (list (* 0.5 (+ (car pt1) (car pt2)))
(* 0.5 (+ (cadr pt1) (cadr pt2)))
0
)
dst (* 0.75 (ai_dxf 40 dxf2))
pt (polar pt (+ ang (/ pi 2)) dst)
dxf2 (subst (cons 11 pt) (assoc 11 dxf2) dxf2)
dxf2 (subst (cons 50 ang) (assoc 50 dxf2) dxf2)
)
(entmod dxf2)
))
(setq *error* olderr)
(princ)
)
;;
(defun ai_dxf (key lst)
(cdr (assoc key lst))
)
;;======================================================================
(princ) 不管移动、旋转还是删除命令后,再用"U"退回,均会出现“参数类型错误”。但反应器好像也还在,不知是怎么回事。 没人回答吗?郁闷!
页:
[1]