2014年4月15日 星期二

Visual Lisp 輸入 呼叫對話盒



Visual Lisp 程式有個視窗介面是很體面的,事實上程式規模發展到一個階段,也不可能只靠命令列的問答來輸入,Visual Lisp 也提供視窗介面,在 Windows 程式中這種程式分類為 FORM (表單),基本上 VB (VBA) 也是,另外一種就是類似 AutoCAD 或是 WORD 以工作空間為主,搭配選單、工具列、狀態列等等。
如何使用視窗介面,這話說來就長了,首先當然要有對話盒的定義,在 Visual Lisp 中定義會儲存在副檔名為 DCL 檔案中,先不提,先來看看在 VL 中如何呼叫對話盒。

需要幾個函數組合,還是拿型鋼剖面函數作例子

(setq dcl_ID (load_dialog "HSteelR3.dcl"))
(if( not (new_dialog "HSteelR3" dcl_ID))
(exit)
)

上面程式中將 HSteelR3.dcl 這個檔案載入,並取得對話盒識別代碼 dcl_ID,再來將 HSteelR3.dcl 中定義 HSteelR3 對話盒建立 (換句話一個 DCL 檔可以定義好幾個對話盒),當然如果載入失敗,程式便終止,如果要人性化一點,在執行 (exit) 前可加一句警告,用 (alert) 就可以了。

      中間有很多動作,如設定初始值,設定對話盒的反應動作,例如最簡單的,當使用者按下取消,則程式要進行結束動作,這些以後再談。

再來
(start_dialog)
(unload_dialog dcl_ID)

執行到 (start_dialog) 對話盒便出現在 AutoCAD 程式中與使用者互動,最後 (unload_dialog dcl_ID) 釋放對話盒定義。
程式可一層一層呼叫對話盒,沒記錯可以有八層,不過太多層對話盒會混亂,二至三層對話盒呼叫應該是合理的。

至於 DCL 檔案如何製作,有個不幸的消息,它也跟 Visual Lisp 一樣是用鍵盤敲進去的 (VLIDE ),我用過 VC++, Matlab, VBA,通通是視覺化操作,拉一拉對話盒就完成了,只能說 XX 比雞腿,對岸有人在搞視覺化這檔事,可惜我拿不到手,不過我要說的是,比起在編寫程式所花的時間,寫寫對話盒定義占的比例並不大。

沒有留言:

張貼留言