AutoCAD动态研究
本帖最后由 redcat 于 2011-11-17 21:39 编辑;;;AutoCAD动态研究
(defun c:test (/ gr code data)
(defun *error* (inf)
(setq inf (strcase inf t)) ;将出错信息转换为小写字符串
(cond
((wcmatch inf "*break*,*cancel*,*exit*,*取消*,*中断*") ;|按了<Esc>键出错处理|;
(princ "\n用户按了<Esc>强制退出\n")
;;; (mapcar 'setvar varlst var_old);还原系统变量
)
(t ;|其余错误处理|;
(princ (strcat "\n" inf))
;;; (mapcar 'setvar varlst var_old);还原系统变量
)
) ;_ 结束cond
(vla-EndUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)))
(princ)
) ;_ 结束defun
(while (progn
(setq gr (grread t 15 0)
code (car gr)
data (cadr gr)
) ;_ 结束setq
(cond
((= code 2) ;键盘区域
(princ "\n您按了键盘区域:")
(princ (vl-list->string(cdr gr)))
)
((= code 3) ;鼠标左击
(princ "\n鼠标左击点为:")
(princ data)
)
((= code 5) ;鼠标移动
(princ "\n鼠标移动到:")
(princ data)
)
((or(= code 11) ;(getvar"SHORTCUTMENU")=0时,鼠标右击
(= code 25)) ;(getvar"SHORTCUTMENU")≠0时,鼠标右击
(princ "\n您右击了鼠标:")
)
(t)
) ;_ 结束cond
t
) ;_ 结束progn
) ;_ 结束while
) ;_ 结束defun
请教下这个出错处理后面没有出现这个 *error* ,但是exit ....又打印出错的提示 ,不太明白出错处理。 学习一下,感谢分享! 很好的东西 动态是个好东西 收藏下来,好好看看学习研究领会
谢谢楼主的分享 :)
有点奇怪的是,为什么
我必须是 11而非25才是右击鼠标呢
((= code 11) ;鼠标右击
(princ "\n您右击了鼠标:")
)
感谢分享!
下载学习了! 回复 qjchen 的帖子
好象跟控制右键快捷菜单的这个系统变量有关 "SHORTCUTMENU" 好象跟控制右键快捷菜单的这个系统变量有关 "SHORTCUTMENU"
我的机子上即使改为11
右击还是25 好东西,学习 好东西 研究很深,学习了
页:
[1]
2