頁:
[1]
AUTO LISP幫忙debug
各位大大幫幫我 想寫一個AutoCAD LISP是希望她可以畫出梯子 可是不知道為何一直都有錯誤~
幫幫我看看是程式碼哪裡有問題~~
<程式>
(defun c:ladder()
(setq pa (getpoint "請輸入左下角點:"))
(setq ww (getdist "\n 請輸入梯子的寬度:"))
(setq hh (getdist "\n 請輸入梯子的高度:"))
(setq n (getint "\n 請輸入梯子的階數:"))
(setq pb (polar pa (/ pi 2) hh))
(setq pc (polar pb 0 ww))
(setq pd (polar pa 0 ww))
(command "line" pa pb pc pd "")
(setq dw ww)
(setq dh (/ hh n))
(setq pp pa)
(repeat n
(setq p1 (polar pp (/ pi 2) dh))
(setq p2 (polar p1 0 dw))
(setq p3 (polar pp 0 dw))
(command "line" pp p1 p2 p3 "")
(setq pp p1)
)
(prin1)
(prompt "\n 《用lisp繪製梯子》")
(prin1)
)
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div> 你的鎖點要關掉,不然line指令會鎖到臨近點
增加一行指令(在第一行)
(command "onsap" "off" ) 原程式修改下
請參考
(defun c:ladder()
(setq pa (getpoint "請輸入左下角點:"))
(setq ww (getdist "
請輸入梯子的寬度:"))
(setq hh (getdist "
請輸入梯子的高度:"))
(setq n (getint "
請輸入梯子的階數:"))
(setq pb (polar pa (/ pi 2) hh))
(setq pc (polar pb 0 ww))
(setq pd (polar pa 0 ww))
(command "line" pa pb "")
(command "line" pc pd "")
(setq dw ww)
(setq dh (/ hh n))
(setq pp pa)
(repeat n
(setq p1 (polar pp (/ pi 2) dh))
(setq p2 (polar p1 0 dw))
;;(setq p3 (polar pp 0 dw))
(command "line" p1 p2 "")
(setq pp p1)
)
(command "line" pa pd "")
(prompt "
《用lisp繪製梯子》")
(prin1)
)
補充內容 (2015-1-6 09:08 PM):
你寫(repeat n數量的第一點是重原點+dh開始畫,故最後一階會重覆,所以pa,pb,pc,pd須取消pb畫到pc,最後補階梯的底線,p3看起來多餘的
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>
頁:
[1]