用SketchUp和Eclipse進行3-D建模(1)
我在最近的一個項目中有一項關鍵工作就是 3-D 建模,我急需找到一個設計工具,于是我嘗試了 AutoCAD、Blender、Maya 和 SketchUp 的評估版。結果,我發現 SketchUp 是迄今為止最易學也是用起來最有趣的工具。“它不可能如此簡單”,我時刻提醒著自已。但是借助 Google 的自定學習進度的教程和 YouTube 上的視頻展示,我不僅縮短了學習曲線,而且還十分享受項目的完成。
|
讓我更為高興的是(我是一個程序員,而不是一個畫家),我發現 SketchUp 可以執行命令腳本,這意味著我可以把一些工作自動化,比如給圖形添加標簽、為界面分配素材或是畫一些幾何圖形,比如拋物線或橢圓。 SketchUp 的 API 是以 Ruby 編程語言為基礎的,與 SketchUp 一樣,它也不難學。為了加快編碼的過程,我編寫了一個定制 Eclipse 插件,它可以通過 SketchUp Bridge 與 SketchUp 通信。
本文提供了對 SketchUp 的一個簡單介紹,解釋了 SketchUp Bridge 是如何工作的,還介紹了如何安裝這個插件來將 Eclipse 連接到 SketchUp 。在 “用 SketchUp 和 Eclipse 進行 3-D 建模” 系列的這篇文章的稍后部分,我們將更深入地探討這個 SketchUp API 以及能夠創建的設計類型。
SketchUp 建模工具
像 Google 站點本身一樣,Google SketchUp 在一個簡單界面下提供了很多的功能。 SketchUp 的目標就是提供 “每個人都會用的 3-D ”,并且它實現了這個目標:五分鐘內,您就可以學會如何畫最基礎的 2-D 形狀并將它們變成 3-D 圖形。經過半個小時的把玩,您就能夠熟練掌握工具欄中的每個工具。圖 1展示了 SketchUp UI 。雖然看上去像是一個建模工具,但用起來感覺更像是個玩具。
圖 1. SketchUp UI

與 Blende 不同,SketchUp 不是開源的。 Google 的專有許可可以讓您在合法范圍內隨意使用這個工具,并且還可以用插件擴展 SketchUp,但源代碼是不開放的。 SketchUp 只能在 Windows®或 Apple Mac OS X 系統上運行,有兩個版本可用:一個免費版和一個費用為 US$495 的收費版,叫作 SketchUp Pro 。 SketchUp Pro 提供了專業的布局和樣式、先進的文件操作及技術支持。不過,免費版本也提供了很多特性,在繼續往下看之前,我建議您訪問 SketchUp 站點(參見參考資料)下載這個版本。
啟動 SketchUp
在***次啟動 SketchUp 時,系統會詢問您想要使用哪個模板。一個模板決定了度量單位及設計窗口的整個外觀。有 12 個模板可供選擇:
- Simple Template(英尺和英寸) —x-y 平面為綠色,正 -z 區域為淺藍色
- Simple Template(米) —x-y 平面為綠色,正 -z 區域為淺藍色
- Architectural Design(英尺和英寸) — x-y 平面為深灰,正 -z 區域為淺灰色
- Architectural Design(毫米) —x-y 平面為深灰,正 -z 區域為淺灰色
- Google Earth Modeling(英尺和英寸) —x-y 平面為綠色,正 z 區域為淺藍色
- Google Earth Modeling(毫米) —x-y 平面為綠色,正 -z 區域為淺藍色
- Engineering(英尺) —整個設計區域都是白色
- Engineering(米) —整個設計區域都是白色
- Product Design and Woodworking(英寸) —x-y 平面為深灰,正 -z 區域為淺灰色
- Product Design and Woodworking(毫米) —x-y 平面為深灰,正 -z 區域為淺灰色
- Plan View(英尺和英寸) —整個設計區域都是白色(從 2-D 視圖開始)
- Plan View(毫米) —整個設計區域都是白色(從 2-D 視圖開始)
除了度量單位外,模板與下一個模板間沒有明顯的區別。由于我是個工程人員,所以我更喜歡用 Engineering(米)模板。
選擇了一個模板后,會出現 SketchUp 設計窗口,您會看到一組線,這些線在稱為原點的地方相交。這些線定義了坐標系(x,y,z),圖 1顯示了這些線的樣子。實心的紅線是正 x 軸,紅虛線是負 x 軸。實心綠線是正 y 軸,綠虛線是負 y 軸。實心藍線是正 z 軸,藍虛線是負 z 軸(xyz = RGB)。
SketchUp 繪圖
本文關心的是自動化 SketchUp,但首先,您需要對如何手工繪圖有一些了解。我們從畫兩個簡單的圖開始。與 Adobe®Photoshop®和 Microsoft®Paint 一樣,SketchUp 繪圖流程也是先從工具欄選擇工具,然后再在設計圖口單擊。圖 2 顯示了 SketchUp 的基礎工具欄。
圖 2. SketchUp 的基礎工具欄

要開始繪圖,先單擊 Rectangle 工具,畫一個平面的實心矩形。通過單擊設計窗口內的兩個點,就可以創建一個矩形。如您所看到的,設計的***個圖形通常被放進 x-y 面。如圖 3a 所示。
圖 3a. 簡單的 SketchUp 圖形

Push/Pull 工具用來給一個平面圖添加第三個維度,可以用它把這個矩形變成一個立體的盒子圖形。單擊 Push/Pull 工具,單擊矩形,然后向上移動鼠標。一個立體的盒子圖形出現在了 SketchUp 窗口,并且它的高度會隨著鼠標的位置變化而變化。再次單擊創建一個類似于圖 3b 的立體盒子圖形。 SketchUp 把從 2-D 圖形創建 3-D 圖形的操作叫作成形(extrusion)。
接下來,在盒子的上方畫一個圓柱體。單擊 Circle 工具,然后單擊盒子頂面的中心。將鼠標從中心向外移動并再次單擊鼠標,畫出一個類似圖 3c 的圓形。***,再次單擊 Push/Pul 工具,然后將鼠標向上移,畫出一個類似圖 3d 的圓柱體。如果向下移動鼠標,那么在盒子里就會出現一個圓柱形的洞。
這個基礎練習非常簡單,SketchUp 可以實現的功能遠遠不止于此。要獲得 SketchUp 的詳細課程,可以登錄 SketchUp 培訓站點(參見參考資料),然后按自已的進度學習這些課程。學完之后,再看看有關中高級主題的一些視頻,以加深對 SketchUp 功能的了解。
SketchUp Ruby Console
盡管 SketchUp 繪圖很有趣,但我還是更愿意用代碼進行設計。要想知道在 SketchUp 中如何用代碼進行設計,請單擊 Window > Ruby Console,這時在底部會出現一個有命令行界面(CLI)的窗口,同時在頂部會出現一個輸出窗口。通過在這個 CLI 中輸入代碼,就可以在設計窗口創建并修改圖形。在開始之前,請先清除掉現有的所有圖形,做法是單擊 Selection 工具,然后按 Ctrl+a,緊接著按下 Delete。接下來在 Ruby Console 的命令行鍵入下面的兩個命令:
face = Sketchup.active_model.entities.add_face [0,0,0], [9,0,0], [9,9,0], [0,9,0] face.pushpull -9 |
這些命令是用 Ruby 寫的,它是 SketchUp 所能識別的惟一一種編程語言。 Ruby 是面向對象的,并且這里的***個命令創建了一個名為face的對象,代表的是當前設計內的一個矩形。第二個命令通過調用Face類的pushpull()方法創建一個盒子圖形。圖 4 顯示了輸入了這兩個命令后的輸出結果。
圖 4. SketchUp Ruby Console 窗口

現在如果看一下 SketchUp 的設計窗口,會看到一個接觸到原點的正方形的盒子(9x9x9)。要想看得更清楚些,可以單擊 Zoom Extents 工具。借助 SketchUp,可以像擺布一個常規的形狀一樣任意移動、伸縮或旋轉這個圖形。
CLI 確實不錯,像我們這樣嚴謹的程序員一般都會將我們的代碼保存在一個文件里,這樣我們就不必重復輸入所有命令了。文件訪問是通過load命令實現的,該命令讀取一個 Ruby 腳本(*.rb)并告訴 SketchUp 的 Ruby 解釋程序執行它的每個命令。我提供了一個示例腳本,名為lathe.rb(參見下載)。這個腳本用一種與前面提及的 Push/Pull 機制不同的成形方法創建了一個圖形。下載完這個腳本后,可以用下面的命令執行這個腳本(這里我們假設這個腳本位于 C:\test 文件夾中):
load "C:/test/lathe.rb" |
SketchUp 現在會在 lathe.rb 內執行這些命令并顯示這個加工好了的圖形,如圖 5 所示。
圖 5. 示例圖形

SketchUp Bridge
|
SketchUp 允許上傳命令腳本,但是不提供任何類型的腳本編輯器。所以,大多數腳本開發人員都需要用一個單獨的應用程序進行腳本編寫,然后再將它們載入到 Ruby 控制臺窗口。我們能做得更好。借助 SketchUp Bridge,可以在 SketchUp 之外執行 Ruby 腳本,這意味著您將無需在控制臺窗口內輸入命令。在本文稍后的部分,我將會闡釋如何從 Eclipse 訪問 SketchUp Bridge 。目前,首要任務是安裝 SketchUp Bridge 文件以觀其效。
獲得并安裝 SketchUp Bridge
SketchUp Bridge 是由 plugins.ro 上的神秘人物發布的,他們的座右銘 “工具讓您快樂” 很值得稱贊。如果是個人使用,可自由訪問此軟件。商業使用需要獲得作者的允許,作者的名字只給出為 TBD。要獲得這個軟件,請訪問 plugins.ro 站點(參見參考資料),并單擊面向 bridge.zip 的鏈接。在下載并解壓縮后,您會看到如下三個重要文件:
- bridge_load.rb —一個 Ruby 腳本,可充當 SketchUp 的插件
- Bridge.so —一個例程庫,供 bridge_load 插件訪問
- SUB.exe —一個 Windows 應用程序,可在 SketchUp 之外執行 SketchUp 腳本
要安裝 SketchUp Bridge,請將前兩個文件放入頂層 SketchUp 安裝文件夾的 Plugins 目錄。在我的系統上,這個文件夾是 C:\Program Files\Google\Google SketchUp 7\Plugins 。由于 bridge_load.rb 是 Plugins 目錄內的一個 Ruby 腳本,所以它會在 SketchUp 啟動時被自動加載。這種目錄結構就將 SketchUp 插件同普通的腳本區別開來。
測試這個橋
在用 Eclipse 與 SketchUp Bridge 進行交互之前,應該驗證一下是不是一切就緒:
- 下載 lathe.rb 腳本(參見下載)并將其放入與 SketchUp Bridge 自帶的 SUB.exe 應用程序相同的文件夾。這個文件夾可以在計算機的任何位置,不一定在 SketchUp 的 Plugins 目錄。
- 啟動 SketchUp,若它已經運行,就重啟它。
- 打開一個 Windows 命令提示,并轉到包含 SUB.exe 和 lathe.rb 腳本的目錄。
- 鍵入命令SUB lathe.rb。
SUB 應用程序告知 SketchUp 讀取 lathe.rb 內的命令。 SketchUp 的 Ruby 解釋器執行這些命令,結果(如圖 5所示)在設計窗口可以看到。如果有兩個顯示器,這種安排會特別方便。您可以在一個顯示器上編輯腳本,在另一個顯示器上查看 SketchUp 設計。
Eclipse 和 SketchUp Bridge
我是一個忠實的 Eclipse 熱愛者,當我需要在一種新語言中編寫代碼時,我一定會首先尋找能提供文件支持和編輯能力的一個 Eclipse 特性以便提高我的工作效率。 Ruby Development Toolset(RDT)過去是可用的,但現在它成為了 Aptana 的 RadRails 工具的一部分,該工具現在是 Aptana Studio 的一種附加特性。您可以下載 Aptana Studio 和 RadRails,但是安裝過程很長,也很復雜。此外,如果您只是想要一個 Ruby 編輯器,下載巨大的 Aptana Studio 的 30 天評估版,很不值得。
由于我不是很滿意現有的 Ruby 工具,我自己編寫了一個簡單的 Eclipse 插件,我姑且冒昧地稱之為SketchUp Software Development Kit 或 SketchUp SDK 。這個插件可以從下載部分獲得。此插件提供了兩個主要特性:一個 Ruby 編輯器,一個可啟動 SketchUp Bridge 應用程序的工具欄項。本節介紹了如何安裝這個插件,并展示了腳本是如何編輯和執行的。
注意:這個問題可能有點讓人迷惑,所以讓我先來闡釋相關的一些術語。在正式的 Eclipse 文檔中,add-on 即plug-in。在正式的 SketchUp 文檔中,用的術語是plugin(沒有連字符)。SketchUp API是一組 Ruby 類、模塊和方法,讓您能夠以代碼的方式訪問 SketchUp 設計。SketchUp SDK是一個 Eclipse 插件,可通過SketchUp Bridge與 SketchUp 交互,而 SketchUp Bridge 又包含一個SketchUp 插件。 SketchUp SDK 與 SketchUp Bridge 完全不同,但前者依賴于后者從 Eclipse 與 SketchUp 交互。
安裝 SketchUp SDK
SketchUp SDK 處于公用領域,由于 SketchUp Bridge 只適用于 Windows,所以 SDK 也只能運行于 Windows 。下載后,需要執行如下 4 個任務:
- 下載 SketchUp Bridge 歸檔文件,將 Bridge.so 和 bridge_load.rb 放入 SketchUp 的 Plugins 目錄。
- 解壓縮 sketchup_sdk.zip,并將 SUB.exe(one of the SketchUp Bridge files)放入頂層 org.dworks.susdk_1.0.0 文件夾下的 exe 文件夾。
- 將 org.dworks.susdk_1.0.0 文件夾移動到頂層 Eclipse 安裝內的 plugins 文件夾。
- 啟動或重啟 SketchUp 和 Eclipse 。
這些文件和目錄可能讓人困惑,所以讓我先來介紹一下我的計算機上的目錄結構。我將 Eclipse 安裝在 C:\eclipse,我的頂層的 SketchUp 目錄是 C:\Program Files\Google\Google SketchUp 7 。因此,SketchUp Bridge 文件—Bridge.so、bridge_load.rb 和 SUB.exe—處于如下位置:
- C:\Program Files\Google\Google SketchUp 7\Plugins\Bridge.so
- C:\Program Files\Google\Google SketchUp 7\Plugins\bridge_load.rb
- C:\eclipse\plugins\org.dworks.susdk_1.0.0\exe\SUB.exe
用 SketchUp SDK 創建和執行腳本
將 SDK 插件和 bridge 文件放入正確的位置后,就可以開始進行編碼了。在 Eclipse 內開發 SketchUp 腳本的過程包含三個部分:
- 在 Eclipse 內創建一個 Ruby 腳本(*.rb)
- 向此腳本添加 SketchUp 命令
- 單擊工具欄上的 SUB 執行 SketchUp 內的腳本
圖 6 顯示了這個編輯環境。
圖 6. SketchUp SDK

如果您已經很熟悉 Eclipse,可能不需要操作指導。如果不熟悉,可以按以下的步驟做:
- 在 Eclipse 內,單擊 File > New > Project。
- 打開 General 文件夾,選擇 Project 并單擊 Next。
- 鍵入 my_project 作為這個項目的名稱,然后單擊 Finish。
- 在 Eclipse Package Explorer 內,右鍵單擊 my_project 然后單擊 New > File。
- 鍵入 my_script.rb作為 SketchUp 腳本的名字,然后單擊 Finish。
- 把文本從 lathe.rb 粘貼到 Eclipse 編輯器中,然后保存這個腳本的內容。
- 單擊 Eclipse 工具欄上的 SUB 訪問 SketchUp Bridge 并把當前編輯器中的腳本發送給 SketchUp 。也可以用快捷鍵 Ctrl+Shift+Space 來完成這個步驟。
- 打開 SketchUp 并放大,應該可以看到同樣的加工好了的圖形,如圖 5 所示。
至此,SketchUp-Eclipse 環境應該已經建好,而且,您對 SketchUp 繪圖也應該有了一個基本的了解。接下來我們將更深入地研究 Ruby 語言和 SketchUp 腳本中的代碼。
結束語
Google 的 SketchUp 應用程序雖然很容易使用和理解,但這并不意味著它的特性有限。 SketchUp 提供了大量的功能,用于模塊化設計、控制設計的外觀及幾何形狀。 SketchUp 最重要的特點之一就是它的腳本解釋器,它可以執行用來創建、修改及刪除一個 SketchUp 設計的各個方面的 Ruby 腳本。雖然 SketchUp 提供了腳本解釋器,但它卻沒有提供編輯器,這也是為什么要用 Eclipse 的原因。
在將 Eclipse 與 SketchUp 交互之前,需要下載 SketchUp Bridge 。這個應用程序包含三個文件,如果放置正確,這三個文件能夠讓您在 SketchUp 控制臺窗口外執行 SketchUp 腳本。接下來,您需要在 Eclips 內下載和安裝 SketchUp SDK 。這個簡單的 SDK 讓您只需單擊一下按鈕就能在 SketchUp 中編輯并執行這些腳本。
您正在閱讀的是:用SketchUp和Eclipse進行3-D建模(1)
【編輯推薦】