2016年7月23日 星期六

OpenSCAD是一種用coding方式的建模軟體,因為之前接觸過滿多coding程式,像是Processing,PureData,Arduino,Xcode...,所以使用起來非常上手,在語法上面和C語言很類似,沒有太多的規矩但,是有時候會因為太簡單所以會翻出所有指令表來參考


這次結合了OpenSCAD和Thingiverse裡的Customizer,讓我們的設計的參數模型能夠開放給其他人做創作.

----------------------------------------

這次我做了一個參數作品,剛開始的想法是設計一款客製化的杯子,能夠讓使用者在Thingivers上做設計,然後輸出成stl檔,再利用陶瓷的3D列印去成型,後來在過程中發現出其他的可能性像是筆筒.戒指.....環形的東西都可以做設計,就看使用者如何去設定參數

下面我會從OpenSCAD的建模到如何上傳至Thingiverse上做教學

----------------------------------------

一開始一定要熟悉的介面
大塊空白的地方是寫coding的欄位,右邊是檔案資訊,包含整個檔案的大小;當程式出錯時也會顯示在這邊,下面有軸向的就是模型render出來的地方摟~
操作說明: 左鍵 - 旋轉
                  右鍵 - 平移
                  滾輪 - 縮放
----------------------------------------
----------------------------------------

介面介紹完了~要開始建模了~

我先將所有程式碼上傳,再一步步講解

CupHeight =100;
TwistDegree=90;
TheSlices=10;
FilletOutside=5;
FilletInside=10;
OutsideSides=4;
InsideSides=10;
OutsideRadius=20;
InsideRadius=5;
ButtomThinkness=0;


module outsideshell(){
    linear_extrude(height=CupHeight,twist=TwistDegree,slices=TheSlices){
      offset(r=FilletOutside){
      translate([0,0]) circle(OutsideRadius,$fn=OutsideSides);
         }
      }
   }
     
module insideshell(){
    linear_extrude(height=CupHeight,twist=TwistDegree,slices=TheSlices){
       offset(r = FilletInside) {
      translate([0,0]) circle(InsideRadius,$fn=InsideSides);
        }
     }
  }
 
 
 difference(){  
     translate([0,0,0]){ outsideshell();}
     translate([0,0,ButtomThinkness]) {insideshell();}
 }



----------------------------------------

建模順序: 草圖1-長出草圖1-草圖2-長出草圖2-用零件2剪裁零件1

首先前面這些參數要先定義好,這樣上傳到Thingivers上才會知道控制的是哪個參數
* 如果要讓字體在Thingiverse上面有間隔,記得要讓空格後的字母變成大寫,不然字都會連在一起(版面也是很重要的)

CupHeight =100;
TwistDegree=90;
TheSlices=10;
FilletOutside=5;
FilletInside=10;
OutsideSides=4;
InsideSides=10;
OutsideRadius=20;
InsideRadius=5;
ButtomThinkness=0;




translate([0,0]) circle(InsideRadius,$fn=InsideSides);

用translate()來定位模型的中心點,再來用circle()做形狀的變化
     translate([0,0,0])
=>translate([x,y,z])

   circle( InsideRadius, $fn=InsideSides);
=>circle( 外接圓半徑 , 正多邊形邊數);

 在圖形外面加上offset() { } 設定多邊形的圓角

     offset(r = FilletInside)
=>offset(r = 圓角半徑)

----------------------------------------

在畫好的2D圖前加上 linear_extrude(){ } 讓2D圖向上長出3D



linear_extrude(height=CupHeight,twist=TwistDegree,slices=TheSlices)
=>linear_extrude(長出高度,旋轉角度,層數)  *層數越高,模型就越細緻

再來將剛剛建好的3D模型帶入到 module outsideshell(){ } 以後需要這個模型就不必再重新輸入一次程式碼,只要輸入 outsideshell(); 就可以把模型叫出來,是不是很方便啊!

----------------------------------------

再重複上面的步驟,做出外面的模型,記得參數要做修改喔~
然後利用 difference(){ } 將兩個模型進行布林運算,



difference(){  
     translate( [0,0,0] ){ outsideshell(); }
     translate( [0,0,ButtomThinkness] ) { insideshell(); }
 }

放在第一個是被修剪的模型,而後面則是要修剪的模型,這樣就大功告成摟~~YA
*我在第二個模型的translate()上加入Z軸的變化,讓使用者自己去設計要不要把底封起來



----------------------------------------
----------------------------------------

再來進入困難的部分了『 將OpenSCAD 的模型上傳到Thingiverse的Customizer 』


一.
▲首先一定要在Tingiverse上面建立帳號,這樣才能使用Customizer


二.
▲帳號建立好後,在上方欄位 Create 選擇 Upload a thing


三.
▲選擇做好的 OpenSCAD 檔案


四.
▲檔案資訊和介紹的部分一定要寫好才能夠上傳給別人看喔!!!


----------------------------------------

五.接著進到 Customizer

▲如果找不到地方進去,剛剛檔案資訊的地方也有連結可以點進去喔!


六.
▲進去後的畫面,然後點擊下方的 Ting setting


七.
▲選擇要放入 Customizer 的檔案


八.


▲找到自己的檔案,如果旁邊有出現 Open in customizer 就代表成功了!


----------------------------------------

自己玩玩看吧~~





▲右邊的 View source 可以看到程式碼



▲選擇 Create thing 就可以輸出成 STL 檔去做列印

----------------------------------------
----------------------------------------

教學就到這邊摟~下次再放新的東西上來



沒有留言:

張貼留言