• 沒有找到結果。

程式與系統架構

第三章 API 開發與設計

3.1 系統開發架構

3.1.2 程式與系統架構

室內裝修業多數使用繪圖軟體為 SketchUp、Revit、Autocad,本研究選擇 SketchUp 2017 版本為主要工具,運用可支援的 Ruby 為開發程式工具。

SketchUp-主要選擇 SketchUp 原因為在室內裝修業多數業者使用,也具有極大的 擴充性,不受限於商業軟體只用於特定的用途,並可以使用支援的程式語言來擴 充功能,滿足使用上的需求。

Ruby- Ruby 是 SketchUp 支援的物件導向程式語言,透過 SketchUp Ruby API 來 和 SketchUp 溝通,優勢為:

(1) Ruby 對於所有的物件具有一個真正的標記-清除(mark and sweep)式 的垃圾收集器(garbage collector)。使用者不必去維護擴充函式庫中的 參 考計數器(reference counts)。

(2) 在 Ruby 中撰寫 C 的擴充程式比在 Perl 或 Python 中方便,擁有許多 方便的 API 可以讓 C 呼叫 Ruby。這樣可以將 Ruby 當成腳本語言,

嵌入到其他軟體之中。它也具有 SWIG 的呼叫界面。

(3) 如果作業系統支援,Ruby 可以動態的載入擴充函式庫。

(4) Ruby 具有與作業系統無關的多線程(threading)能力。可以在所有可以 執行 Ruby 的平台上都能夠達到多線程的目標,而不必管作業系統是否 支援,就算是 MS-DOS 也行。

(5) Ruby 具有高度的移植性:它大部份是在 GNU/Linux 上發展出來,但是 可以執行於多種的作業系統如: UNIX、Mac OS X、Windows、DOS、

BeOS、OS/2 等。

由於 SketchUp 與 Ruby 互相支援,但畢竟以世界上在 SketchUp 有在作開發 的人,預計全世界可能只有約千人左右,所以有關的程式資訊就相對的不足,對 於開發設計上會增進困難度,所以為了將寫入的外掛程式能簡易化點,將帶入網

23

頁程式語言來作程式設計,網路程式語言就屬於現今較流通的語言,相對資訊上 比較充足,會使用的人也較大眾,在寫入的過程當中比較好排解困難,所以在寫 入程式位階架構中會如圖 3.1 分兩個主體(1) SketchUp 搭配 Ruby (2)網頁程式語 言搭配 HTML、JavaScript 與 CSS。

圖 3.1 寫入程式位階架構圖

在此次程式設計上會利用網路程式語言來撰寫文字、放置圖片、程式的版面 設計、表格顯示與功能下載等等,那利用 SketchUp 載入此語言工具列,藉以處 理複雜的介面處理,網路程式語言並且使用下面語法來實現 Ruby 與 JavaScript 之間的溝通,如參數的傳遞與事件的通知等。

如圖 3.2 為解釋 SketchUp 如何做到 Ruby 與 JavaScript 之間的溝通圖,一 開始先在 SketchUp 滑鼠點擊開啟 API 功能,網頁程式語言接收到後,即可起 API 功能,在功能表上輸入好指令後,再回到 SketchUp 聽到事件後,就唯一個溝通 的橋樑,在傳遞到網頁程式語言來做最後的確認動作,最後再到 SketchUp 執行,

來完成此目標動作。

圖 3.2 SketchUp 如何做到 Ruby 與 JavaScript 之間溝通圖

24

舉例如果想要創建一道牆面,如圖 3.3 所示,首先會在 SketchUp 功能延伸 程式開啟 API,網頁程式語言收到後,即開啟 API 介面出來,在輸入好所需參數 指定後,再回到 SketchUp 點擊所想要畫的牆尺寸線,點擊好後回到 API 功能,

點 擊 點 選 成 型 , 回 到 SketchUp 畫 面 收 到 指 令 後 , 即 可 完 成 牆 面 。

圖 3.3 舉例使用 API Drawing Plus創建牆面程式流程圖

25

對於開發此 API 最大目的之一,即為賦予繪製的所有原件,都需要有相關 資訊,如物件的面積、長度等數據,所以對於資訊的彙整與統計相當重要,在程 式的設計邏輯上編排,會將所有物件的資訊儲存於所有實體上,這樣下一步就是 簡單的統計了,當統計的事件被啟動後,Ruby SketchUp 檢視檔案裡所有實體的 資訊,全部都被彙整起來傳送到 html 視窗來作觀看,也可簡易的將資訊利用 html 來轉換成 Excel 另外來運用。如圖 3.4 為統計資訊的彙整圖。

圖 3.4 統計資訊的彙整圖

26

相關文件