(command "LINE" pt1 pt2 "")
如果 CAD 現在圖層是 "0",線形式 "Continues",那麼這條線的預設值便已訂好, 如果你要別的圖層,那要先更改圖層,例如先執行
(setvar "CLAYER"
"LINE")
把預設的圖層改為 "LINE",下一個物件若不是在 "LINE" 圖層上,那麼請再換一次,畢竟 CAD 不是你肚子裡的蛔蟲。
還有什麼問題,鎖點,若在繪圖時鎖點模式打開, 那麼鎖點會取代程式輸入值,明明畫的點應該形成四邊形, 螢幕上卻跑出四不像,所以繪圖前先把鎖點關閉 (當然不是按 F9)
(setvar "OSMODE" 0)
那麼程式完成時呢?抱歉,鎖點就被關閉了, 如果還想恢回覆繪圖前狀態,先把鎖點的參數記下來, 最後在設定一次
(setvar _osmode (getvar
"OSMODE"))
(setvar "OSMODE" 0)
..... (繪圖指令)....
(setvar "OSMODE"
_osmode)
還有問題,是關於對話盒的問題,例如開啟舊檔對話盒, 圖塊屬性對話盒,若在 LISP 執行過程跳出,則程式會中斷, 等待使用者輸入並關閉對話盒後才會繼續執行,若不想被打斷,那麼 "FILEDIA"
"ATTDIA" 也記得要關。
若對指令欄中一連串輸出厭煩 (或是不想讓使用者知道執行過程),先設定
(setvar "CMDECHO" 0)
上面這些拉拉雜雜的問題都是跟 (command) 指令有關,所以 Visual LISP 內還有一個 (entmake) 指令,以設定群碼內容方式繪圖,就沒有上面的問題 (但是並如容易掌控)。
最後有一個動作也是值得設定的,就是 UNDO 指令,在所有動作開始前設定
(command "UNDO"
"M")
若程式執行結果不如預期,例如畫出的圖形與現有圖形重疊, 而你的程式已經執行了幾百個動作,又無法放棄不存檔, 那心中的無奈跟手指按 CTRL+Z 的痛苦可是無以覆加
如果程式先設定 UNOD MARK 位置,那麼此時只要執行 UNDO/B,就可回到 LISP 執行前狀態,當然付出的代價是程式執行速度,不過,還是那句話, 我輩能寫的出的程式,通常不會有這個問題滴。
沒有留言:
張貼留言