OpenSCAD 是個可以使用程式設計來建立 3D 模型的語言,選擇 OpenSCAD 的理由,在〈3D建模與程式設計〉中曾經談過,如果你想進入程式設計,從 OpenSCAD 開始,也可以是〈另一種程式設計選擇〉。
這陣子想了一想,玩 OpenSCAD 也算是有一段時間,也創造了 一些有趣的模型,趁著有些想法的時候,來記錄一些東西!
實際上,OpenSCAD 的文件在其官網上的 documentation 就有不少了,我在學習使用的過程中,多半也只是泡在其中,想要用什麼就查什麼,其他時間更多是花在模型的分而治之,以及各部位需要的幾何數學上,因此,我這邊的文件,不一定會詳細交代每個語法或函式怎麼使用,就想到什麼重要的,就記錄下來這類的…XD
下載 OpenSCAD
當然,第一步還是要先下載 OpenSCAD 的環境,這可以在官網的 download 中找到,在撰寫這份文件的時候,穩定的版本是 OpenSCAD 2015.03-2,這程式的釋出版本是以日期作為區別。
在同一頁面的下方,有個 Development Snapshots 區域,可以下載最新的 Build,一樣地,也是以日期作為區別,正如其 Build 名稱指出的,這是會不定期地釋出的版本,穩定性什麼的就自行考量。
文件會以 OpenSCAD 2015.03-2 為環境,以 Windows 版本來說,只要下載 zip 版本就可以了,注意你的系統是 32 位元還是 64 位元,下載後解開 zip 至你想要放置的資料夾,執行 openscad.exe,就可以開啟程式了,第一次開啟的畫面會像是以下:
如果你開啟過一些 OpenSCAD 的原始檔,左邊會留下記錄,方便下一次開啟,右邊是一些範例,日後你有興趣再自行研究其原始碼就可以了,至於現在,可以先按下「New」的按鈕,這會開啟一個新的 OpenSCAD 檔案,並進入預設的環境設定:
編輯器設定
上圖左邊是 OpenSCAD 2015.03-2 中預設的編輯器,據稱已經比先前舊版的編輯器好用許多了,不過,如果你有慣用的編輯器,倒也不一定要用這個編輯器,你可以執行上方選單的「View/Hide editor」,這樣就會隱藏預設的編輯器。
接著,你可以使用任何一個你實用的編輯器,例如,若想改用 NotePad++ 的話,就直接編輯一個 .scad 副檔名的文字檔案,像是 hello.scad,文字檔編碼請使用 UTF-8,這樣的話,遇到非西歐字元(像是中文),也才能正確地解譯,你可以試著在 hello.scad 中輸入:
cube([1, 2, 3]);
這個簡單的程式碼,表示以長、寬、高 [1, 2, 3]
建立一個立方體,然後,在 OpenSCAD 的選單執行「File/Open」,開啟 hello.scad,這樣就會如下圖所示:
這是我平常編輯 OpenSCAD 原始碼與預覽模型的方式,你可以繼續編輯檔案,OpenSCAD 的預設中,只要偵測到檔案內容有變動,就會自動重新載入檔案並重新預覽模型,你可以試著改變 cube([1, 2, 3])
中的數字並存檔,就能馬上看到預覽模型的變化。
基本上,存檔後自動載入檔案並進行模型預覽,是比較方便,不過,你也可以取消這個行為,這可以在選單「Design/Automatic Reload and Preview」中設定。
Hello, OpenSCAD!
程式建模的好處之一,就是可以參數化,也就是在適當地設計之下,只要改變某些參數,就可以由程式自動產生新的模型,既然如此,就來個 Hello, OpenSCAD! 作為示範吧!在你的 .scad 檔案中輸入以下的內容:
my_text = "Hello, OpenSCAD!";
step_angle = 30;
step_height = 5;
radius = 30;
height = 5;
len_of_my_text = len(my_text);
for(i = [0:len_of_my_text]) {
rotate(step_angle * i)
translate([radius, 0, i * step_height])
linear_extrude(height)
text(my_text[len_of_my_text - i]);
}
這個程式有一些需要說明的地方,這會是之後文件的課題,當各個元素你都瞭解之後,再來看這個程式就會覺得非常簡單了。
就目前來說,只要知道這個程式的主要目的,是稍微展現一下程式建模的威力,你會看到以下的預覽圖形:
你可以試著改變 my_text
、step_angle
、radius
、height
的值,就會看到不同的結果,例如,設定以下的值:
my_text = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
step_angle = 20;
step_height = 5;
radius = 30;
height = 5;
就可以看到一個很漂亮的字母樓梯了:
你可以試著在預覽中試著使用滑鼠左鍵或右鍵分別拉動,就可以轉動或平移模型預覽。
匯出 STL
OpenSCAD 的模型預覽,就真的只是預覽,也就是說,執行你撰寫的程式,將 2D 預覽畫面中可見的部份繪製出來而已,實際上,3D 的相關資料並沒有產生,如果你想要匯出模型,必須先執行選單「Design/Render」,讓 OpenSCAD 計算出 3D 模型的相關資料,這個動作也可以按下 F6 或者是預覽窗格工具例中有個「I」的圖示來完成,也就是下圖中左邊數來第二個圖示:
順便一提的是,預覽的左下方都會指示出 XYZ 座標的正方向,這在 3D 建模中是很重要的指示,你總得知道現在圖形的方向不是嗎?
視模型的複雜度與電腦的執行速度而定,Render 可能很快或者花上很長的一段時間,以上面的簡單模型來說,Render 只要一瞬間,而底下的 3D 列印,當初 Render 出 3D 模型資料,就花了快一個小時的時間…XD
完成 Render 之後,你就可以執行選單「File/Export/Export as STL」來匯出 STL,其中也有可匯出的其他格式。
當然啦!方才的程式產生的簡單模型列印出來沒什麼意義,而且它每個字都是分離的,這只是體驗,之後再來設計一些有趣且可列印的模型範例囉!…XD