openscad初學者指南:程式設計3d列印模型

如果你不懂藝術,3D建模軟體可能很難使用。OpenSCAD提供了一種專門為3D列印設計模型的方法,只使用程式碼。...

你一直想設計自己的3D模型嗎?3D打印你設計的零件怎麼樣?有很多三維建模程序,但這些可能很難使用,如果你不是藝術(像我一樣)。OpenSCAD提供了一種專門為3D打印設計模型的方法,只使用代碼。如果您也不知道如何編寫代碼,請不要擔心,今天我將指導您完成基礎知識。

guide-openscad-3d-print

什麼是openscad公司(openscad)?

OpenSCAD是一種免費的實體計算機輔助設計建模工具。它適用於Windows、Mac和Linux。與其他許多程序不同的是,您使用代碼而不是鼠標設計部件。這使得很容易進行數學計算,在變量中存儲尺寸,調整零件大小等等。

在三維打印模型時,需要考慮一些因素,但其中許多因素通常適用於三維打印CAD模型,而不僅僅是OpenSCAD設計。如果您想了解更多有關3D打印的信息,請查看我們的終極初學者指南。如果您正在尋找更具交互性的建模工具,請閱讀《在Sketchup中創建對象的指南》。

設置

首先,進入下載頁面,找到適合您操作系統的OpenSCAD版本。我使用的是MacOS,但這些OpenSCAD原則適用於所有系統。

安裝後,請繼續打開它。您將看到以下啟動菜單:

OpenSCAD Starting Menu

這將向您顯示上次打開的文件,並提供加載幾個示例的選項。請隨意看看一些例子,但是我發現在剛開始的時候這些會讓事情變得更加混亂。對於本教程,請單擊“新建”按鈕創建一個新文件。

一旦打開,您將看到這個外觀**的界面:

OpenSCAD Interface

這分為三個主要方面。左邊是編輯器和菜單。你要在這裡寫你的文章代碼。這個在創建新文件時,還沒有任何代碼。在頂部,有一些菜單按鈕來執行基本任務,如加載、保存、撤消等。

OpenSCAD Editor

右下角是控制檯。這將顯示構建模型時的任何錯誤。

OpenSCAD C***ole

最後一部分是右上角的主界面。在這裡您可以與您的模型交互,但是您不能在這裡編輯它(您將編寫代碼來完成此操作)。

OpenSCAD Interface

在這個主界面的底部有幾個按鈕。這些主要允許您以不同的方式查看您的設計。

按編輯器菜單中的“保存”按鈕或轉到“文件”>“保存”,繼續保存新文件。

基礎知識

OpenSCAD大部分時間的工作方式是通過簡單形狀的加法和減法。你可以用這種方法建立非常複雜的模型,所以讓我們開始吧。

這是第一個形狀,一個簡單的盒子:

OpenSCAD Simple Box

下面是代碼:

cube(); // create a cube

要讓代碼執行並構建模型,您需要預覽它。默認情況下,每次保存時OpenSCAD都會執行此操作,也可以按F5鍵強制刷新。按住鼠標左鍵或右鍵在三維空間中四處移動。

現在,這產生了一個很好的立方體,但是如果沒有任何維度,它就沒有多大用處。OpenSCAD在任何特定的測量系統中都不起作用,相反,單位都是相對的。您可以創建一個20 x 10的長方體,並由任何其他程序(如您的3D打印切片器)來解釋這些,無論是公制還是英制。它實際上提供了很大的靈活性。

讓我們為立方體添加一些維度。您可以通過向多維數據集方法傳入參數來執行此操作:

cube(size = [10, 20, 30]); // rectangle

值10、20和30表示立方體在X、Y和Z軸上的大小。注意這是如何產生一個更大的矩形的:

OpenSCAD Rectangle

默認情況下,OpenSCAD從左下角繪製組件。您可以通過將“中心”參數設置為true來調整此設置。下面是對矩形執行此操作的代碼:

cube(size = [10, 20, 30], center = true); // rectangle centered

下面是它的樣子:

OpenSCAD Rectangle Centered

居中對象對於簡單的形狀很有效,但是對於非對稱對象,居中對象會使事情變得複雜。你需要決定哪種方法最適合你。

轉到更復雜的形狀,這裡是一個圓柱體:

OpenSCAD Cylinder

下面是創建它的代碼:

cylinder(d = 10, h = 10, center = true); // cylinder

與立方體不同,圓柱體會自動在X軸和Y軸的中心繪製。d參數表示直徑(如果願意,可以通過半徑)。h參數是高度。不過,這裡出了點問題。這個氣缸看起來很“塊狀”。您需要增加圓周上繪製的面數。這很容易做到——將以下參數添加到您的圓柱體代碼中。

$fn = 100

因此圓柱體定義為:

cylinder(d = 10, h = 10, center = true, $fn = 100);

下面是它的樣子:

OpenSCAD High Resolution Cylinder

這增加了做圓所需的面數——100是一個很好的起點。請記住,這將大大增加渲染時間,特別是在複雜的模型上,因此通常最好在完成設計之前忽略這一點。

在形狀上應用變換很容易。在創建形狀之前,需要調用特殊方法。下面是如何使用旋轉方法旋轉圓柱體:

rotate(a = [0, 90, 0]) cylinder(d = 10, h = 10, center = true); // rotated cylinder

傳遞給a參數的值表示X、Y和Z軸的旋轉角度。結果如下:

OpenSCAD Rotation

另一個非常有用的函數是translate。這允許您在三維空間中移動對象。再一次,您需要傳遞每個軸的移動量。結果如下:

OpenSCAD Translate

代碼如下:

translate(v = [0, 25, 0]) cylinder(d = 10, h = 10, center = true); // translated cylinder

理解翻譯方法是你能做的最重要的事情之一。它是設計最複雜的設計所必需的。

最後,另一個有用的形狀是球體:

OpenSCAD Sphere

代碼如下:

sphere(d = 100);

就像圓柱體一樣,您可以使用上面的$fn代碼使其平滑。

高級編碼

既然你知道了基本知識,讓我們來看看一些更高級的技能。當設計零件時,有助於思考如何由較小的形狀和對象構成零件。你不必這樣做,你可以在你走的時候“彌補”事情,但有一個粗略的計劃確實有幫助——即使只是在你的頭腦裡。

讓我們創建一個高級形狀:一個具有空心球體內部的立方體。創建一個立方體和一箇中心設置為true的球體。使用差分法從另一箇中減去一個:

difference() { // subtraction cube(size = [50, 50, 50], center = true); // outer cube sphere(d = 65, center = true); // inner sphere}

結果如下:

OpenSCAD Advanced Cube

用球的直徑(d參數)進行實驗,看看會發生什麼。

在OpenSCAD中,通常有許多方法來完成相同的任務。如果你想在一個立方體上有一個凹槽,你可以從中減去另一個立方體,或者在上面再加兩個。通常情況下,用哪種方式做事情並不重要,但根據零件的複雜程度,先做某些操作可能更容易。

下面介紹如何在多維數據集中創建通道。使用圓柱體將創建圓形通道,而不是使用另一個立方體。請注意如何再次使用差分方法,以及如何使用平移和旋轉方法來操縱形狀。使用rotate方法通常會使變換變得很棘手,因此在獲得所需結果之前,請使用這些參數。代碼如下:

difference() { // subtraction cube(size = [50, 150, 50]); // outer cube translate(v = [25, 150, 50]) rotate(a = [90, 0, 0]) cylinder(d = 40, h = 150); // cylinder channel}

下面是它的樣子:

OpenSCAD Channel Cube

你可能想知道什麼是綠色的東西。這是因為3D模型現在只是一個預覽。若要修復此問題,請按F6鍵完全渲染模型。這可能需要一些時間,具體取決於複雜性。預覽(F5)通常在工作時足夠好。以下是最終渲染的效果(將$fn設置為100):

OpenSCAD High Resolution Channel Cube

下面是另一個高級示例。比如說你想用螺栓裝東西。使用圓柱體創建孔非常簡單,但是如果您希望埋頭螺栓的螺栓頭平齊安裝,該怎麼辦?您可以簡單地創建一個大圓柱體,讓螺栓頭坐在其中,但這看起來不是很好。解決方案是一個倒角,可以使用圓柱體方法創建。這裡的技巧是指定兩個直徑——d1和d2。**這些不同的尺寸,剩下的由OpenSCAD來完成。

因為我是英國人,所以我會用公制尺寸來表示M5沉頭螺栓。你可以很容易地調整,以適應任何固定你想使用。代碼如下:

$fn = 100;// bolt settingsm5_clearance_diameter = 5.5;m5_head_clearance_diameter = 11;m5_head_depth = 5;difference() { // subtract cube(20, 20, 20); bolt_hole(10, 10, 20); bolt_bevel(10, 10, 15);}module bolt_hole(x, y, height) { /* M5 hole at 90 deg. */ translate(v = [x, y, 0]) cylinder(d = m5_clearance_diameter, h = height);}module bolt_bevel(x, y, z) { // M5 bevel translate(v = [x, y, z]) cylinder(d2 = m5_head_clearance_diameter, d1 = m5_clearance_diameter, h = m5_head_depth);}

注意螺栓尺寸是如何存儲在變量中的嗎?這使得編碼和維護更加容易。一種你可能還沒有遇到的方法是模塊。這允許您定義一個代碼塊,以便隨時執行。實際上,這是一個函數。對於任何複雜的形狀,您都應該使用模塊和變量,因為它們使內容更易於閱讀,並且可以更快地進行任何更改。倒角如下:

OpenSCAD Chamfer

讓我們看最後一個例子。假設你想在一個圓周圍產生一系列的洞。您可以手動測量、平移和旋轉所有這些,但即使使用模塊,這也會很乏味。最終結果是,10個圓柱體均勻分佈在一個圓上:

OpenSCAD Circle Distribution

代碼如下:

$fn = 100;number_of_holes = 10;for(i = [1 : 360 / number_of_holes : 360]) { // number_of_holes defines number of times this code runs make_cylinder(i);}module make_cylinder(i) { // make cylinder and even distribute rotate([0, 0, i]) translate([10, 0, 0]) cylinder(h = 2, r = 2);}

此代碼比您預期的簡單。for循環用於調用make_u缸模塊10次。由於圓中有360度,360/10=36,因此每個圓柱體需要以36度的增量旋轉。這個循環的每次迭代都會使i變量增加36。這個循環調用make_u圓柱體模塊,它只需繪製一個圓柱體,並根據循環傳遞給它的度數來定位它。可以通過修改\u孔變量的number_來繪製多個或更少的圓柱體,儘管如果要調整間距,則可能需要調整間距。下面是100個圓柱體的形狀,它們稍微重疊:

OpenSCAD 100 Circle Distribution

導出

既然您知道如何在OpenScad中編碼,那麼在您可以3D打印模型之前,還需要最後一步。您需要將您的設計從OpenSCAD導出為大多數3D打印機使用的標準STL格式。幸運的是,有一個“導出到STL”按鈕:“編輯器”菜單>右上角:

OpenSCAD Export STL

今天到此為止。您現在應該對OpenSCAD有了很好的瞭解——所有複雜的東西都建立在這些基礎之上,許多複雜的形狀實際上是許多簡單形狀的組合。

對於一個挑戰,為什麼不看看我們的一些3D打印項目,並嘗試在OpenSCAD中重新創建部分:

  • 桌面幻想RPG 3D打印件
  • 自定義快捷鍵
  • 電子D20
  • 遊戲,您可以3D打印

你今天學了什麼新把戲嗎?你最喜歡的OpenSCAD功能是什麼?你會很快從另一個CAD工具切換嗎?請在下面的評論中告訴我們!

  • 發表於 2021-03-15 10:55
  • 閱讀 ( 73 )
  • 分類:DIY

你可能感興趣的文章

9個很棒的樹莓皮星球大戰專案創意

...本文中,我們將介紹各種樹莓皮星球大戰建設。從簡單的初學者專案到荒謬複雜的專案,這裡肯定會有激發你創造力的東西! ...

  • 發佈於 2021-03-12 02:42
  • 閲讀 ( 66 )

你現在可以做10個預算的arduino星球大戰專案

... 壓電蜂鳴器包括在許多Arduino初學者工具包,是一個偉大的方式來新增聲音的專案,我們使用了一個在我們的Buzz Wire遊戲與Arduino教程。指導員使用者埃塞拉用一個玩總是不祥的帝國死亡進行曲。該專...

  • 發佈於 2021-03-12 05:05
  • 閲讀 ( 52 )

15個很棒的星球大戰道具你可以3d列印

... 如果你喜歡的道具不可用,為什麼不用OpenSCAD自己設計呢? ...

  • 發佈於 2021-03-12 08:21
  • 閲讀 ( 58 )

讓萬聖節你自己與這些石化的3d列印

... 如果你受到了啟發或者有冒險精神,為什麼不用OpenSCAD設計你自己的3D模型呢。 ...

  • 發佈於 2021-03-12 23:32
  • 閲讀 ( 57 )

不涉及程式碼的程式設計師的10個愛好

...的規則——真正的旅程在於學習你可以運用的無數策略。初學者應該從一個像Go Free這樣的應用開始,在學習這些資源的圍棋策略的同時與AI對抗。 ...

  • 發佈於 2021-03-13 06:43
  • 閲讀 ( 48 )

如何做一個diy相機滑塊低於35美元

...果你想知道我是如何設計這些部件的,你可以閱讀我們的OpenSCAD初學者指南。 ...

  • 發佈於 2021-03-13 08:52
  • 閲讀 ( 50 )

用unity編寫遊戲:初學者指南

...可以在Unity中使用的語言),那麼請參閱我們的指南,為初學者提供六種最簡單的程式語言。 ...

  • 發佈於 2021-03-13 11:55
  • 閲讀 ( 52 )

18個有趣的diy樹莓皮案例創意

...護您的Pi使用一個案件。你可能有一個箱子和你的樹莓皮初學者工具包。如果沒有,你可以很容易地使自己幾乎沒有成本。 ...

  • 發佈於 2021-03-13 15:17
  • 閲讀 ( 49 )

最好的3d列印桌面幻想RPG

...的3D印表機上。雖然這個選項很方便,但它並不是唯一的初學者三維建模工具。 ...

  • 發佈於 2021-03-15 14:09
  • 閲讀 ( 41 )

用v型槽鋁擠壓制作東西的初學者指南

用金屬來建造東西並不像你想象的那麼難:V型槽和t型槽鋁型材使建造結構框架變得簡單。加入我,我告訴你它是什麼,你如何開始與這些東西,建立一些驚人的東西。 ...

  • 發佈於 2021-03-17 00:28
  • 閲讀 ( 48 )