(defun C:TT (/ *ERROR* OS PT1 PT2 PT3 PT4);;¿ÉÒÔ°Ñ*ERROR*·ÅÔÚÕâÀÕâʱºòº¯ÊýÄÚÍâµÄ
;;*ERROR*¾ÍÇø±ð¿ªÁË£¬¸ú¶ÀÁ¢Ãû³Æ¿Õ¼äµÄ¸ÅÄîÒ»Ñù
;;*ERROR*ºÍÆäËûº¯Êý×îÖØÒªµÄÇø±ð¾ÍÊDzÎÊýµÄ´«µÝÊÇϵͳ
;;×Ô¶¯Íê³ÉµÄ£¬¶ø²»ÊÇÎÒÃÇÈÎÒâÖÆ¶¨µÄ¡£²ÎÊýMSGÊÇϵͳ´òÓ¡µÄ´íÎóÐÅÏ¢¡£
;;Ö®ËùÒÔ´ó¼ÒÒªÖØ¶¨Òå*ERROR*£¬1.ÐÞ¸ÄMSG»òÕß²»´òÓ¡MSG¡£
;;2.Ö´ÐÐ×Ô¶¨Òå³ö´í»Ö¸´µÄÏà¹Ø´úÂ룬ÈçÏÂÃæµÄÀý×Ó(or OS (setqvar "osmode" os))
;;¾ÍÊÇÎÒÏëÔÚ³ö´íºó»¹Ô­OSMODEµÄÖµ
(defun *ERROR* (MSG)
(if OS(setvar "osmode" os))
(princ "12312");;;;;;;´íÎóÌáʾ
)
(setq os (getvar "osmode"))
(setvar "osmode" 0)
(setq PT1 (getpoint "\nµÚÒ»µã: "));;--
(setq PT2 (getpoint "\nµÚÒ»µã: "));;|------ÕâËÄÐдúÂë
(setq PT3 (getpoint "\nµÚÈýµã: "));;| Ö´Ðйý³ÌÖÐÈç¹û°´ESC£¬³ÌÐò¾Í²»»áÍùÏÂÖ´ÐУ¬¶ø
(setq PT4 (getpoint "\nµÚËĵã: "));;-- ÊÇ×Ô¶¯¼¤»î*ERROR*
(command "_.pline" pt1 pt2 pt3 pt4 "c")
(setvar "osmode" os);;ÕâÒ»ÐÐÊÇÔÚ²»³ö´íµÄÇé¿öÏÂÖ´Ðеġ£
(princ)
) 乱码不是我的错。。哈哈
已c版程序为例。
如果你要出错后执行什么
(defun *ERROR* (MSG)
(if OS(setvar "osmode" os))
(princ "12312")
)
像上面princ位置,随便加你想要的东西呵呵 为什么我7楼加的红色部分没有执行呢? cabinsummer 发表于 2011-10-5 22:39 static/image/common/back.gif
我晕了.昨晚以为对了.结果今天再试,又不对了.
昨天不出来花纹,是因为这句(setvar "osmode" 0),后面为0,有可能不对,CAD按F2可看到很多提示,循环6次,提示6次,叫我输入什么参数.我看到有些地方是"OFF".因为一个花纹也没出来,所以CAD没崩溃.
还有这里
(defun myerr (msg)
(setqvar "osmode" os)
(setq *error* olderr)
(princ)
)
setqvar是不是多了一个q啊.怎么好象也不对.改和不改.现在CAD都要崩溃了.崩溃与否的原因可能是前面捕捉那里的0.
把前面的0改为"OFF"后,ERROR函数每次都执行了.我加入的ALERT语句就在循环里执行了6次.
caoyin 发表于 2011-10-5 23:45 static/image/common/back.gif
;;;原理跟上面一样,其实很多人把*ERROR*想得复杂了
(defun C:TT2 (/ OS PT1 PT2 PT3 PT4)
(vl-catch-a ...
除了用这段 (setq os (getvar "osmode"))
还用别的方法吗?
程序运行中按ESC中断可不可以用*ERROR*来解决呢? 学习学习,呵呵 cabinsummer 发表于 2011-10-6 05:40 static/image/common/back.gif
(setq olderr *error* *error* myerr)就是
(setq olderr *eoor*);;;保存系统错误处理函数
(setq *error ...
老大,您的这句“任何程序错误,系统都会调用*error*函数,但是默认的*error*函数不一定是我们需要的。”真是说的精髓,让我拨开了重重迷雾,得见阳光!
老大威武,道法高深! 原来setq可以这样用
_$ (setq mymul *)
#<SUBR @0c7ef588 *>
_$ (mymul 2 3)
6
页:
1
[2]