[已解決]按ESC鍵造成函數中斷
2 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論 :: 已解決主題精華區
第1頁(共1頁)
[已解決]按ESC鍵造成函數中斷
我的程式如果按【ENTER】或【空白鍵】結束時,按【U】回上一步的時候
可以整個圖形復原(這是我想要的結果)
但如果按下【ESC】鍵,好像是會造成函數中斷,所以按【U】
就變成一條線一條線還原
請問程式該如何修改?
但為何按【U】復原,就出現如下圖的情形@@?
可以讓他按U的時候不要出現(LISP表示式)嗎?謝謝!
可以整個圖形復原(這是我想要的結果)
但如果按下【ESC】鍵,好像是會造成函數中斷,所以按【U】
就變成一條線一條線還原
請問程式該如何修改?
- 代碼:
(defun C:kk ()
;; 2012.05.05 by KPA_KWJ
(setvar "cmdecho" 0) ; 關閉指令回應
(setvar "blipmode" 0) ; 關閉十字
(sub_chk_layer) ; 檢查圖層
(sub_chk_style) ; 檢查線型
(setq INS (getpoint "\n 長條孔的插入點 : "))
(setq LO (getreal "\n 請輸入長條孔的最大長度 : "))
(setq DO (getreal "\n 請輸入長條孔的孔徑尺寸 : "))
(setq ANG 0) ; 將ANG預設為0
(setq ang-old ANG) ; 將ANG的角度值,設定為角度的預設值ang-old
(prompt "\n 請輸入旋轉角度<") (princ ang-old) (princ "> : ") ; 提示輸入角度
(setq ANG (getangle INS)) ; 可直接輸入角度
(if (= ANG nil) ; 如果不輸入角度值,直接按[enter]
(setq ANG ang-old) ; 就表示接受內定的角度值ang-old
)
(while INS
(setvar "osmode" 0) ; 將系統變數的抓點模式值設為0,防止抓錯點座標值
(setq ptc01 (polar INS (+ PI ANG) (/ (- LO DO) 2.0)))
(setq ptc02 (polar INS ANG (/ (- LO DO) 2.0)))
(setq pta01 (polar ptc02 (+ (* PI 0.5) ANG) (/ DO 2.0)))
(setq pta02 (polar ptc02 (+ (* PI 1.5) ANG) (/ DO 2.0)))
(setq pta03 (polar ptc01 (+ (* PI 1.5) ANG) (/ DO 2.0)))
(setq pta04 (polar ptc01 (+ (* PI 0.5) ANG) (/ DO 2.0)))
(setq pta05 (polar ptc01 (+ PI ANG) (* DO 0.75)))
(setq pta06 (polar ptc02 (+ 0 ANG) (* DO 0.75)))
(setq pta07 (polar ptc02 (+ (* PI 0.5) ANG) (* DO 0.75)))
(setq pta08 (polar ptc02 (+ (* PI 1.5) ANG) (* DO 0.75)))
(setq pta09 (polar ptc01 (+ (* PI 1.5) ANG) (* DO 0.75)))
(setq pta10 (polar ptc01 (+ (* PI 0.5) ANG) (* DO 0.75)))
(setvar "clayer" "str")
(setvar "textstyle" "cc")
(COMMAND "UNDO" "BE") ; U的起始
(command "arc" "c" ptc02 pta02 pta01) ;畫右側邊的圓弧
(command "arc" "c" ptc01 pta04 pta03) ;畫左側邊的圓弧
(command "line" pta01 pta04 "") ;畫上方的橫線
(command "line" pta03 pta02 "") ;畫下方的橫線
(setvar "clayer" "cen")
(command "line" pta05 pta06 "") ;畫中間的橫線(中心線)
(command "line" pta07 pta08 "") ;畫右邊的直線(中心線)
(command "line" pta09 pta10 "") ;畫左邊的直線(中心線)
(command "regen") ; 圖面重繪
(setvar "osmode" 39) ; 恢復抓點模式功能
(setq INS (getpoint "\n 再次插入點 : ")); 重複插入,可插入多個相同的長條孔在不同的位置
)
(COMMAND "UNDO" "E") ; U的結尾
(prin1)
)
;=====================================
(defun sub_chk_layer()
(setq chklay (tblsearch "layer" "str"))
(if (= chklay nil)
(command "layer" "n" "str" "c" "7" "Str" "")
)
(setq chklay (tblsearch "layer" "dim"))
(if (= chklay nil)
(command "layer" "n" "dim" "c" "1" "Dim" "")
)
(setq chklay (tblsearch "layer" "cen"))
(if (= chklay nil)
(command "layer" "n" "cen" "c" "3" "cen" "lt" "center" "Cen" "")
)
(setq chklay (tblsearch "layer" "hid"))
(if (= chklay nil)
(command "layer" "n" "hid" "c" "5" "hid" "lt" "hidden" "Hid" "")
)
)
;=====================================
(defun sub_chk_style()
(setq chksty (tblsearch "style" "cc"))
(if (= chksty nil)
(command "style" "cc" "txt,chineset" "" "" "" "" "" "")
)
(setq chksty (tblsearch "style" "kk"))
(if (= chksty nil)
(command "style" "kk" "標楷體" "" "" "" "" "")
)
)
;=====================================
(defun *error* (msg)
(princ "")
(princ)
)
但為何按【U】復原,就出現如下圖的情形@@?
可以讓他按U的時候不要出現(LISP表示式)嗎?謝謝!
kev1229qq123 在 周四 31 五月 - 1:09 作了第 1 次修改
____________________________________________________________________________________
★隨心所欲~ *γ∩__∩γ*
kev1229qq123- 中級會員
- 文章總數 : 142
年齡 : 38
來自 : 台北
職業 : 學生
愛好 : CAD/Pro.e
個性 : 隨性隨和
使用年資 : 4
使用版本 : CAD2014
積分 : 8
經驗值 : 6248
威望值 : 40
發帖精華 : 1
注冊日期 : 2008-10-21
回復: [已解決]按ESC鍵造成函數中斷
(setvar "clayer" "str")
(setvar "textstyle" "cc")
(COMMAND "UNDO" "G") ; U的起始 <---"BE" 改為"G"
(command "arc" "c" ptc02 pta02 pta01) ;畫右側邊的圓弧
(command "arc" "c" ptc01 pta04 pta03) ;畫左側邊的圓弧
(command "line" pta01 pta04 "") ;畫上方的橫線
(command "line" pta03 pta02 "") ;畫下方的橫線
(setvar "clayer" "cen")
(command "line" pta05 pta06 "") ;畫中間的橫線(中心線)
(command "line" pta07 pta08 "") ;畫右邊的直線(中心線)
(command "line" pta09 pta10 "") ;畫左邊的直線(中心線)
(command "regen") ; 圖面重繪
(setvar "osmode" 39) ; 恢復抓點模式功能
(COMMAND "UNDO" "E") < END 加在這邊 .一個迴圈一個END
(setq INS (getpoint "\n 再次插入點 : ")); 重複插入,可插入多個相同的長條孔在不同的位置
)
; (COMMAND "UNDO" "E") ; U的結尾<----取消
(prin1)
)
;;--以上程式碼局部修改.!! 你試試`
(setvar "textstyle" "cc")
(COMMAND "UNDO" "G") ; U的起始 <---"BE" 改為"G"
(command "arc" "c" ptc02 pta02 pta01) ;畫右側邊的圓弧
(command "arc" "c" ptc01 pta04 pta03) ;畫左側邊的圓弧
(command "line" pta01 pta04 "") ;畫上方的橫線
(command "line" pta03 pta02 "") ;畫下方的橫線
(setvar "clayer" "cen")
(command "line" pta05 pta06 "") ;畫中間的橫線(中心線)
(command "line" pta07 pta08 "") ;畫右邊的直線(中心線)
(command "line" pta09 pta10 "") ;畫左邊的直線(中心線)
(command "regen") ; 圖面重繪
(setvar "osmode" 39) ; 恢復抓點模式功能
(COMMAND "UNDO" "E") < END 加在這邊 .一個迴圈一個END
(setq INS (getpoint "\n 再次插入點 : ")); 重複插入,可插入多個相同的長條孔在不同的位置
)
; (COMMAND "UNDO" "E") ; U的結尾<----取消
(prin1)
)
;;--以上程式碼局部修改.!! 你試試`
shenhung- 高級會員
- 文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8074
威望值 : 1188
注冊日期 : 2009-06-03
回復: [已解決]按ESC鍵造成函數中斷
您好~謝謝您熱心的指導
可是改過以後狀況還是存在耶@@
想請問一下UNDO的"BE" 改為"G"
"G"代表的意思是?
他的副指令只有「自動(A)」/「控制(C)」/「開始(BE)」/「結束(E)」
/「標記(M)」/「退回(B)」
可是改過以後狀況還是存在耶@@
想請問一下UNDO的"BE" 改為"G"
"G"代表的意思是?
他的副指令只有「自動(A)」/「控制(C)」/「開始(BE)」/「結束(E)」
/「標記(M)」/「退回(B)」
____________________________________________________________________________________
★隨心所欲~ *γ∩__∩γ*
kev1229qq123- 中級會員
- 文章總數 : 142
年齡 : 38
來自 : 台北
職業 : 學生
愛好 : CAD/Pro.e
個性 : 隨性隨和
使用年資 : 4
使用版本 : CAD2014
積分 : 8
經驗值 : 6248
威望值 : 40
發帖精華 : 1
注冊日期 : 2008-10-21
回復: [已解決]按ESC鍵造成函數中斷
G 是GROUP的意思~
(COMMAND "UNDO" "E") < END 加在這邊 .一個迴圈一個END
(setq INS (getpoint "\n 再次插入點 : ")); 重複插入,可插入多個相同的長條孔在不同的位置
UNDO END 在插入點之前這個你有加嗎. !!
我是在2010版測過 ..ESC 中斷之後 .可以一個長條孔.一個一個慢慢回復.不會一條線一條線..!!
但你如果要全部一起回複的話.就要用ERROR 錯誤處理函數..把UNDO END 加上.!!
(COMMAND "UNDO" "E") < END 加在這邊 .一個迴圈一個END
(setq INS (getpoint "\n 再次插入點 : ")); 重複插入,可插入多個相同的長條孔在不同的位置
UNDO END 在插入點之前這個你有加嗎. !!
我是在2010版測過 ..ESC 中斷之後 .可以一個長條孔.一個一個慢慢回復.不會一條線一條線..!!
但你如果要全部一起回複的話.就要用ERROR 錯誤處理函數..把UNDO END 加上.!!
shenhung- 高級會員
- 文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8074
威望值 : 1188
注冊日期 : 2009-06-03
回復: [已解決]按ESC鍵造成函數中斷
UNDO END 在插入點之前這個你有加嗎. !! .....這個我有加了^^
G 是GROUP的意思......所以G是隱藏的指令嗎?@@"
哈哈~我有成功啦...非常感謝!
ESC 中斷之後 .可以一個長條孔.一個一個慢慢回復.不會一條線一條線
sorry~~應該是我沒說清楚 ~~
我是指下圖這個情形還是存在~因為我覺得他很礙眼
G 是GROUP的意思......所以G是隱藏的指令嗎?@@"
哈哈~我有成功啦...非常感謝!
ESC 中斷之後 .可以一個長條孔.一個一個慢慢回復.不會一條線一條線
sorry~~應該是我沒說清楚 ~~
我是指下圖這個情形還是存在~因為我覺得他很礙眼
____________________________________________________________________________________
★隨心所欲~ *γ∩__∩γ*
kev1229qq123- 中級會員
- 文章總數 : 142
年齡 : 38
來自 : 台北
職業 : 學生
愛好 : CAD/Pro.e
個性 : 隨性隨和
使用年資 : 4
使用版本 : CAD2014
積分 : 8
經驗值 : 6248
威望值 : 40
發帖精華 : 1
注冊日期 : 2008-10-21
回復: [已解決]按ESC鍵造成函數中斷
AUTOCAD是有一些隱藏指令沒錯.!!
UNDO-G 的寫法.是以前參考前輩的寫法.一直到現在.!!你UNDO的時候 會有.COMMAND:_U GROUP的提示
但UNDO-BE也OK的..你這個LISP之前的問題在END放置的位置!!.
跟"BE"和"G".沒關係的,..我一直因為習慣才請你改為"G" 真抱歉!!
(LISP 表示式)的確礙眼.我也想把它隱藏..你發現什麼好辦法的時候.請記得告訴我.!!
UNDO-G 的寫法.是以前參考前輩的寫法.一直到現在.!!你UNDO的時候 會有.COMMAND:_U GROUP的提示
但UNDO-BE也OK的..你這個LISP之前的問題在END放置的位置!!.
跟"BE"和"G".沒關係的,..我一直因為習慣才請你改為"G" 真抱歉!!
(LISP 表示式)的確礙眼.我也想把它隱藏..你發現什麼好辦法的時候.請記得告訴我.!!
shenhung- 高級會員
- 文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8074
威望值 : 1188
注冊日期 : 2009-06-03
回復: [已解決]按ESC鍵造成函數中斷
嗯~謝謝
如果到時候有找到辦法隱藏掉(LISP 表示式)的話
我一定會po上來告知的^^
如果到時候有找到辦法隱藏掉(LISP 表示式)的話
我一定會po上來告知的^^
____________________________________________________________________________________
★隨心所欲~ *γ∩__∩γ*
kev1229qq123- 中級會員
- 文章總數 : 142
年齡 : 38
來自 : 台北
職業 : 學生
愛好 : CAD/Pro.e
個性 : 隨性隨和
使用年資 : 4
使用版本 : CAD2014
積分 : 8
經驗值 : 6248
威望值 : 40
發帖精華 : 1
注冊日期 : 2008-10-21
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論 :: 已解決主題精華區
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章