«Youtube 教學影片

從一個正方形開始

這是學習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中,在命令提示列下輸入pboxenter,即可完成繪製。

1
2
3
(defun c:pbox()
(command "line" "0,0" "10,0" "10,10" "0,10" "0,0" "")
)

在上面的例子當中,

  • 行1,我們定義了pbox(),也就是一個新的指令,將來可在Autocad的繪圖環境中呼叫並執行。
  • 行2,使用command,呼叫line指令,依序輸入座標,完成圖形繪製。

若是你能正確完成以上任務,不知道你有沒有發現這個程式功功能太單調了,如何讓程式可以和使用者進行互動呢?讓我們來想一想,幫這個程式加上以下的功能:

  • 使用者自訂左下角點
  • 使用者自訂長度

如何取得使用者輸入的資料

getpoint ("\n命令提示語")

1
2
3
4
5
6
7
8
(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 "");畫出線條
)

操作流程

  1. 開啟AutoCAD
  2. 開啟NotePad++
  3. 輸入程式
  4. 拖拉程式至AutoCAD以載入程式
  5. 輸入pbox執行程式

Tips

載入的程式執行後有亂碼,該怎辦呢? 記得要在編碼的地方選擇正確的編碼方式為ANSI,就不會有亂碼囉

常數

變數