{%hackmd SvihAsFvQhqKwnHH9RXdDA %} # 從一個正方形開始  這是學習Autolisp的第一個圖,在這個例子當中,我們要學習自原點(0,0)開始,繪製一個邊長為10的正方形。我們可以將完成圖形需要的四個角座標分別算出:O(0,0); A(10,0);B(10,10);C(0,10)。 正常的情況之下,我們可在Autocad軟體畫面中,點選線(line)指令,按下**enter**(或滑鼠右鍵),然後依序輸入各點座標可完成繪製,若需結束指令可再按下一次**enter**鍵。按下**F2**開啟文字視窗,觀察剛剛繪圖的步驟,若將這些與電腦互動的過程以文字的方式記錄下來,未來載入至Autocad中,即可重複實現繪製方形的效果了。說了許多,不如自己親自嘗試,看看你是否能夠正確完成這個任務呢?加油吧! 若以程式方式表達,可開啟notepad++,將以下程式內容輸入,另存成1-1.lsp後,載入至AutoCAD中執行。載入的方式可以直接拖曳程式至AutoCAD中,在命令提示列下輸入**pbox**,**enter**,即可完成繪製。 ```lisp=1 (defun c:pbox() (command "line" "0,0" "10,0" "10,10" "0,10" "0,0" "") ) ``` 在上面的例子當中, * 行1,我們定義了pbox(),也就是一個新的指令,將來可在Autocad的繪圖環境中呼叫並執行,但是要小心,不要使用保留字(也就是已經被定義好的指令名稱,如**line**,這樣你的畫線指令就不見囉) * 行2,使用command,呼叫line指令,依序輸入座標,完成圖形繪製。 # 增加功能畫出高櫃 當你學會了如何畫一個邊長為10的正方形之後,我們將強化這一個程式的功能,畫出方形的對角線,圖形就成為一個高櫃的圖示,行手做做看該如何進行呢?  請將你的貼案貼在[討論版](https://f.acad.myds.me)上,給大家看看喔,誰的程式精簡高效。 --- # Round 2 若是你能正確完成以上任務,不知道你有沒有發現這個程式功功能太單調了,如何讓程式可以和使用者進行互動呢?讓我們來想一想,幫這個程式加上以下的功能: - 使用者自訂左下角點 - 使用者自訂長度 ## 如何取得使用者輸入的資料 ```lisp=1 getpoint ("\n命令提示語") ``` ```lisp=1 (defun c:pbox2 () (setq po (getpoint "\n請點選左下角點:")) ;請輸入左下角點 (command "line" po "@10<0" "@10<90" "@10<180" "c" ) ) ``` ```lisp=1 (defun c:pbox2 () (setq po (getpoint "\n請點選左下角點:")) ;請輸入左下角點 (setq len (getint "\n請輸入長度:")) ;這請輸入長度 (setq pa (polar po 0 len)) ;計算pa點相關位置 (setq pb (polar pa (* pi 0.5) len)) ; (setq pc (polar pb pi len)) (command "line" po pa pb pc po "");畫出線條 ) ``` ## 操作流程 * 開啟AutoCAD * 開啟NotePad++ 輸入程式後另存新檔,檔案類型改成**all types**,副檔名為**lsp** * 拖拉程式至AutoCAD以載入程式 * 在命令提示區中,輸入**pbox**執行程式 ## 小結 在這個例子當中你是否學會了 1. 定義一個新的指令名稱(pbox) 2. 將lisp程式載入至Autocad 3. 使用Notepad++編輯程式 ## 常見問題 :::warning :hand: 載入的程式執行後有亂碼,該怎辦呢? :a: 記得要在編碼的地方選擇正確的編碼方式為ANSI,就不會有亂碼囉 ::: ## 課後複習  * A(x1,y1) * B(x2,y2) * C(x3,y3) * D(x4,y4) --- 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up