[討論]怪怪的LISP
4 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
[討論]怪怪的LISP
請教一下高手:
最近在練習AutoLisp,我參照書上的練習把程式打出來後,拿到autocad 2009中測試,結果測試出好多種不同的錯誤喔,我重新檢查好多遍,就是找不到到底哪裡打錯了,也對著書上的練習一個字一個字檢查,也並沒有錯,不論怎麼測試都會出現好多種狀況的錯誤,怎麼會這樣阿,到底是我的問題,還是軟體有問題阿?請各位高手幫幫小弟解除這個疑惑,謝謝!
我差不多七年前就已經學過AutoLisp,也練過這個練習了,那時候是2002版的,那時測試都沒有問題阿,這三年沒用autocad而都在畫solidworks,最近開始常用到autocad,所以又開始複習一下autolisp,沒想到剛開始就碰到這個問題,究竟是我的問題還是軟體的問題,真傷腦筋阿
以下是我照書上練習的程式:
(defun c:pbox()
;以下pa、ww、hh值由使用者輸入
(setq pa (getpoint "輸入左下角點:"))
(setq ww (getreal "\n 寬度 w:"))
(setq hh (getreal "\n 高度 h:"))
;以下pb、pc、pd值須由程式依據pa、ww、hh求出
(setq pb (polar pa 0 ww))
(setq pc (polar pb (/ pi 2) hh))
(setq pd (polar pc pi ww))
;以下依據pa、pb、pc、pd點畫矩形
(command "pline" pa pb pc pd "c")
;以下mp1、mp2、mp3、mp4值須由程式依據pa、ww、hh
;&pb、pc、pd值求出
(setq mp1 (polar pa 0 (/ ww 2)))
(setq mp2 (polar pb (/ pi 2) (/ hh 2)))
(setq mp3 (polar pc pi (/ ww 2)))
(setq mp4 (polar pa (* pi 0.5) (/ hh 2)))
;以下依據mp1、mp2、mp3、mp4點畫出二條線
(command "line" mp1 mp3 "")
(command "line" mp2 mp4 "")
)
圖上紅色線條才是正確答案,白色線條都是錯的,請各位高手幫我看看到底問題出在哪裡啊?
謝謝!
最近在練習AutoLisp,我參照書上的練習把程式打出來後,拿到autocad 2009中測試,結果測試出好多種不同的錯誤喔,我重新檢查好多遍,就是找不到到底哪裡打錯了,也對著書上的練習一個字一個字檢查,也並沒有錯,不論怎麼測試都會出現好多種狀況的錯誤,怎麼會這樣阿,到底是我的問題,還是軟體有問題阿?請各位高手幫幫小弟解除這個疑惑,謝謝!
我差不多七年前就已經學過AutoLisp,也練過這個練習了,那時候是2002版的,那時測試都沒有問題阿,這三年沒用autocad而都在畫solidworks,最近開始常用到autocad,所以又開始複習一下autolisp,沒想到剛開始就碰到這個問題,究竟是我的問題還是軟體的問題,真傷腦筋阿
以下是我照書上練習的程式:
(defun c:pbox()
;以下pa、ww、hh值由使用者輸入
(setq pa (getpoint "輸入左下角點:"))
(setq ww (getreal "\n 寬度 w:"))
(setq hh (getreal "\n 高度 h:"))
;以下pb、pc、pd值須由程式依據pa、ww、hh求出
(setq pb (polar pa 0 ww))
(setq pc (polar pb (/ pi 2) hh))
(setq pd (polar pc pi ww))
;以下依據pa、pb、pc、pd點畫矩形
(command "pline" pa pb pc pd "c")
;以下mp1、mp2、mp3、mp4值須由程式依據pa、ww、hh
;&pb、pc、pd值求出
(setq mp1 (polar pa 0 (/ ww 2)))
(setq mp2 (polar pb (/ pi 2) (/ hh 2)))
(setq mp3 (polar pc pi (/ ww 2)))
(setq mp4 (polar pa (* pi 0.5) (/ hh 2)))
;以下依據mp1、mp2、mp3、mp4點畫出二條線
(command "line" mp1 mp3 "")
(command "line" mp2 mp4 "")
)
圖上紅色線條才是正確答案,白色線條都是錯的,請各位高手幫我看看到底問題出在哪裡啊?
謝謝!
Tiger&蘋果爸 在 2010-05-25, 12:30 作了第 3 次修改
meucci323- 一般會員
- 文章總數 : 14
年齡 : 47
來自 : 苗栗縣
職業 : 繪圖工程師
愛好 : internet
個性 : 隨和
使用年資 : 3年
使用版本 : 2008,2009
經驗值 : 5636
威望值 : -1
未回應主題 : 1
注冊日期 : 2009-07-05
回復: [討論]怪怪的LISP
在討論區發表問題時,請在主題前請加入[問題],顏色請指定為[藍色],論壇管理顧問會將您的主題置頂,方便大家即時討論。
[說明]發表主題前,請遵守相關要領!
http://autocad.bestoforum.net/forum-f12/topic-t1521.htm
謝謝您的配合~
[說明]發表主題前,請遵守相關要領!
http://autocad.bestoforum.net/forum-f12/topic-t1521.htm
謝謝您的配合~
____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
回復: [討論]怪怪的LISP
謝謝提醒,不好意思阿,我第一次發表文章,所以不清楚規矩,下次會改進
meucci323- 一般會員
- 文章總數 : 14
年齡 : 47
來自 : 苗栗縣
職業 : 繪圖工程師
愛好 : internet
個性 : 隨和
使用年資 : 3年
使用版本 : 2008,2009
經驗值 : 5636
威望值 : -1
未回應主題 : 1
注冊日期 : 2009-07-05
回復: [討論]怪怪的LISP
你的程式沒問題..只是鎖點模式打開而已.
程式之前.先記錄目前鎖點模式..畫完圖之後再回覆原來的鎖點模
(defun c:pbox(/ pa ww hh pb pc pd mp1 mp2 mp3 mp4 )
;以下pa、ww、hh值由使用者輸入
(setq c_osmode (getvar "osmode"))
(setq old_err *error* *error* pbox_err)
(setq pa (getpoint "輸入左下角點:"))
(setq ww (getreal "\n 寬度 w:"))
(setq hh (getreal "\n 高度 h:"))
;以下pb、pc、pd值須由程式依據pa、ww、hh求出
(setq pb (polar pa 0 ww))
(setq pc (polar pb (/ pi 2) hh))
(setq pd (polar pc pi ww))
;以下依據pa、pb、pc、pd點畫矩形
(setvar "osmode" 0)
(setvar "cmdecho" 0)
(command "pline" pa pb pc pd "c")
;以下mp1、mp2、mp3、mp4值須由程式依據pa、ww、hh
;&pb、pc、pd值求出
(setq mp1 (polar pa 0 (/ ww 2)))
(setq mp2 (polar pb (/ pi 2) (/ hh 2)))
(setq mp3 (polar pc pi (/ ww 2)))
(setq mp4 (polar pa (* pi 0.5) (/ hh 2)))
;以下依據mp1、mp2、mp3、mp4點畫出二條線
(command "line" mp1 mp3 "")
(command "line" mp2 mp4 "")
(setvar "cmdecho" 1)
(setvar "osmode" c_osmode)
(princ)
)
(defun pbox_err(st)
(setvar "osmode" c_osmode)
(setq *error* old_err)
(princ)
)
程式之前.先記錄目前鎖點模式..畫完圖之後再回覆原來的鎖點模
(defun c:pbox(/ pa ww hh pb pc pd mp1 mp2 mp3 mp4 )
;以下pa、ww、hh值由使用者輸入
(setq c_osmode (getvar "osmode"))
(setq old_err *error* *error* pbox_err)
(setq pa (getpoint "輸入左下角點:"))
(setq ww (getreal "\n 寬度 w:"))
(setq hh (getreal "\n 高度 h:"))
;以下pb、pc、pd值須由程式依據pa、ww、hh求出
(setq pb (polar pa 0 ww))
(setq pc (polar pb (/ pi 2) hh))
(setq pd (polar pc pi ww))
;以下依據pa、pb、pc、pd點畫矩形
(setvar "osmode" 0)
(setvar "cmdecho" 0)
(command "pline" pa pb pc pd "c")
;以下mp1、mp2、mp3、mp4值須由程式依據pa、ww、hh
;&pb、pc、pd值求出
(setq mp1 (polar pa 0 (/ ww 2)))
(setq mp2 (polar pb (/ pi 2) (/ hh 2)))
(setq mp3 (polar pc pi (/ ww 2)))
(setq mp4 (polar pa (* pi 0.5) (/ hh 2)))
;以下依據mp1、mp2、mp3、mp4點畫出二條線
(command "line" mp1 mp3 "")
(command "line" mp2 mp4 "")
(setvar "cmdecho" 1)
(setvar "osmode" c_osmode)
(princ)
)
(defun pbox_err(st)
(setvar "osmode" c_osmode)
(setq *error* old_err)
(princ)
)
Tiger&蘋果爸 寫到: 謝謝熱心回覆~< 積分 +1>
[公告]關於團隊成員的回文及貢獻
Tiger&蘋果爸 在 2010-04-12, 09:30 作了第 1 次修改 (原因 : 非常專業!!)
shenhung- 高級會員
- 文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8077
威望值 : 1188
注冊日期 : 2009-06-03
回復: [討論]怪怪的LISP
如同shenhung大說的~
像這類的程式,在畫圖形之前要關閉物件鎖點~
雖然每一點都有明確的定出來,但它還是會因為有設定物件鎖點而抓錯點~
使得圖形不正確,這點要注意~
像這類的程式,在畫圖形之前要關閉物件鎖點~
雖然每一點都有明確的定出來,但它還是會因為有設定物件鎖點而抓錯點~
使得圖形不正確,這點要注意~
明~- 高級會員
- 文章總數 : 307
年齡 : 44
來自 : 彰化
職業 : 機械
愛好 : 打球 騎車 健行 音樂 電影 (說不完...)
個性 : 不與人爭
使用年資 : 從學生時代接觸到現在(工作中不一定使用)
使用版本 : 2004和2008
積分 : 17
經驗值 : 7197
威望值 : 667
注冊日期 : 2009-12-24
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章