2014年3月12日 星期三

一行程式碼 (三)

Visual Lisp 中如何操縱 AutoCAD 畫出圖形? 正統的答案是使用 entmake 函數,對於一般使用者,entmake 並不切親,那麼另一種呢?

其時操縱Visual Lisp 畫圖並不難,只要會畫圖就可以了,舉個例,你現在要在(100, 100) 位置上,畫出半徑 10 的圓,你會怎麼做

首先,呼叫 circle 指令 (選單、按鈕或指令打字)
輸入 100,100 (圓的中心點)
輸入 10 (圓的半徑)

打完收工,一個半徑 10 的圓乖乖的出現在螢幕上。

Lisp 上場,Lisp 派出 command 函數,請看
(command "circle" "100,100" "10")

你應該要抗議了,它抄我 !!!

是的,它完全抄 AutoCAD 指令,有沒有覺得天空亮出數道光束,鴿子四處飛舞?

實際在 Visual Lisp 程式內,"100,100" "10" 通常會是變數,隨著程式運算,給予不同的數值。

當然,這個指令有些缺點常被拿來說嘴,例如說執行速度比 entmake 慢,拜託,什麼時代了,如你會覺得電腦鈍,那你的 PC 應該有 7 8 年的歷史了吧,多久沒有殺手級軟體出現,再則,以我輩功力,要寫出讓電腦卡住的程式,大概只有一種可能,寫錯了,例如掉入無限迴圈之類;它有其它的缺點,以後再提吧。

這裡再補充一下,在 command 下有兩個值一提的輸入 PAUSE "", PAUSE 是讓指令暫停等待使用者輸入,"" 則是代替 ENTER,例如

(command "LINE" PAUSE "@100,0" "")

執行後會直接要求你輸入起始點 (PAUSE),輸入後起始點後便直接畫出向右 100長度的直線 (@100,0),最後不會問你下一點是否要輸入直接結束 (""),如果你會修改指令,這應該是個良好的提示。

沒有留言:

張貼留言