在 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),最後不會問你下一點是否要輸入直接結束 (""),如果你會修改指令,這應該是個良好的提示。