[求助]請教一個關於中斷出錯的問題
各位老大,我寫一個以零件名及版本號做為文件名的分圖程序,正常運行沒有問題。可是如果中途按"ESC"鍵退出的話,"Filedia"沒有總是沒有辦法回到值1。請各位指點一下如何解決。謝謝了<div><br/></div> (setq $orr *error* *error* MyErr)放到程序的第一行即可.
(Defun Myerr(S)
(Princ);繰纐癶
(Setvar "Filedia" 1)
)
(Defun C:Ww(/ Part-X Part Rev-X Rev Directory Filename Part-Ucs)
(setq $orr *error* *error* MyErr)
(Setq Part-X (Entget (Car(Entsel"\n 匡拒箂ン絪腹:"))))
(Setq Part (Cdr (Assoc 1 Part-X)))
(If (= (Substr Part 1 11) "O");家腹い丁琌"稼"
(Setq Part (Strcat (Substr Part 1 10) "0" (Substr Part 12 6)));ノ"箂"蠢
(Setq Part Part)
)
(Setq Rev-X (Entget (Car(Entsel"\n 匡拒セ:"))))
(If (= (Cdr (Assoc 0 Rev-X)) "INSERT");セ腹琌遏
(Setq Rev "O");セ腹"稼"
(If (= (Cdr (Assoc 1 Rev-X)) "1");セ腹"箂"
(Setq Rev "O");セ腹"稼"
(Setq Rev (Cdr (Assoc 1 Rev-X)))
)
)
(Setq Directory (Strcat "F:/FT/" (Substr Part 1 12) "/"))
(Setq Filename (Strcase (Strcat Directory Part "-REV-" Rev;|"-Rev-O"|;)))
(Setq Part-Ucs (Cdr (Assoc 10 Part-X)))
(Setvar "Filedia" 0)
(Vl-Cmdf "-Wblock" Filename "" Part-Ucs Pause)
(setq *error* $orr);確岿玡砞竚
(Setvar "Filedia" 1)
;(Setvar "Cmdecho" 1)
(Princ)
)
再請教一下,現在還有一個問題,因為零件圖是從總圖中剪切分出去的,分完之後還要復原。如果在分完一個零件圖後馬上UNDO,一樣會出現"FILEDIA"的值無法回到1的問題 <div><font color="#008000">例五是一段程序出错函数与Undo处理的示例。<br/>************************************************<br/>;;例五<br/>(defun
newerr (s) ;出错函数<br/> (if s<br/>
(progn<br/> (term_dialog) ;使用对话框时使用
<br/> (if oldvar (setvar ... oldvar)) ;系统变量恢复<br/> (if
olderr (setq *error* olderr)) ;出错函数恢复<br/> (command "_.undo"
"_e") ;Undo编组结束<br/> )<br/> )<br/>
(princ)<br/>)</font></div>
<div><font color="#008000"></font> </div>
<div><font color="#008000">(defun c:my(/ ...)
;主程序(主函数)<br/> (setvar "cmdecho" 0) ;取消命令回显提示<br/>
(command "_.undo" "_BE") ;Undo编组开始<br/> (setq olderr
*error* *error* newerr) ;调用自定义出错函数<br/> (setq oldvar (getvar
...)) ;保存相关系统变量<br/> (setvar
... ;设置系统变量<br/>
... ;程序段<br/> ...<br/> (setvar ...
oldvar) ;恢复系统变量<br/> (setq *error*
olderr) ;恢复出错函数<br/> (command "_.undo"
"_E") ;结束Undo命令编组<br/>
(princ)
;取消程序返回值<br/>)<br/>************************************************</font></div> 謝謝。請問這句<span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; line-height: 24px; "> (if oldvar (setvar ... oldvar)) ;系统变量恢复"怎麼理解?</span> 就是如果oldvar有值就恢复变量 謝謝兩位老大 再請教一下各位老大,為什麼這個程序總是會我多按幾次"ESC"鍵就會在指令行中出大許多"錯“字,然後CAD就崩潰退出的現象?不是每次都會,只是會經常出現。 有沒有大俠指定一點一下啊?
页:
[1]