2020年4月6日 星期一

筆記:創建3D物件,OpenSCAD

  • 技術筆記外殼製作_3D列印 (較久遠的紀錄) (連結)
  • 筆記:久違的3D列印 (使用筆記) (連結)
  • 筆記:創建3D物件,OpenSCAD (製作立體模型相關技巧) (連結)
  • 軟體工程師的3D列印筆記 (使用心得) (連結)
  • 技術筆記:多樣化的3D列印裝置 (連結)

創建3D物件方式眾多(文章),其中又以OpenSCAD全以程式語言創建和控制,最適合軟體工程師使用,文字描述例如:it easier to describe shapes in "words" and mathematics than to master the mouse and keyboard skills of more visual programs. 目前也用OpenSCAD自製了消波塊、光學鏡筒、水杯等,GitHub(連結)。



自製消波塊

基本資料

讀取或新創scad附檔。最簡單作業是cube([1, 2, 3]);存檔,即可看到長寬高為1,2,3的cube,存檔或是PREVIEW都會更新。存檔後自動載入檔案並進行模型預覽(可取消這個行為,這可以在選單「Design/Automatic Reload and Preview」中設定)。

openscad中一個數字單位為1mm

程式format:

  • # 讓這一行後面物件變成透明
  • // 程式註解
簡單幾行就有特殊效果


連結

平面物件

  • 圓形Circle
  • 平面square
  • 多邊形 polygon(points=[[0,0],[20,10],[20,-10]]);
  • 平面square
  • 多邊形 polygon(points=[[0,0],[20,10],[20,-10]]);

立體物件

  • 方形 cube(10)
  • 圓形
  • 球sphere(10)
  • 圓形
  • 柱體 上小下大cylinder(d1=9,d2=7,h=3,center=true) 同樣大小cylinder(d=4,h=1.5,center=true) fn 可以決定圓滑的程度,數字越小,就會變成幾個小平面 $fn=120;
  • 立體文字 linear_extrude(2) text("顧皓光", font = "標楷體");

物件移動

  • 要放在文字之前
  • 移動 translate([1,2,3])
  • 旋轉 rotate([0,45,45])
  • 順序用法 旋轉+移動 translate([20,10,0]) rotate(30) cylinder(d=4,h=1,center=true);

進階 物件棒狀延伸

linear_extrude(height = 10, center = true, convexity = 10, twist = 0) translate([2, 0, 0]) circle(r = 1); Height會變成向上10 twist會變成紐曲狀況 100就是
linear_extrude(height=10, scale=[1,0.1], slices=20, twist=0) polygon(points=[[0,0],[20,10],[20,-10]]);

進階 物件環狀延伸

rotate_extrude(angle=90, convexity=10) translate([20, 0]) circle(10); translate([20,0,0]) rotate([90,0,0]) cylinder(r=10,h=80); translate([0,60,0]) rotate_extrude(angle=270, convexity=10) translate([40, 0]) circle(10);

進階 物件放大縮小

  • 這兩者概念不同,主要是中心點差異
  • scale([1.2,1.2,1.2])
  • resize( [實際X,實際Y,實際Z] ) 參考連結

跨物件的交集、聯集

實際做出東西都是靠很多union difference或是intersection組合而來 物件連結方式 union

交集和聯集形體
排除 difference difference(){ translate([2,2,2]) cube(3); //最上面會留著 translate([1,1,1]) cube(3); //下面的就會逐漸減掉 cube(3); } 交集 intersection 組合輪廓 hull

hull() { translate([15,10,0]) circle(10); circle(10); } 外框 hull() { translate([15,10,0]) circle(10); circle(10); translate([15,40,0]) circle(10);} 變成三個端點


Openscad技巧

openscad的特點是,達到一個目的可以有多種做法,以三角來說,就有三種作法

method 1
module right_triangle(side1,side2,corner_radius,triangle_height){
  translate([corner_radius,corner_radius,0]){  
    hull(){  
    cylinder(r=corner_radius,h=triangle_height);
      translate([side1 - corner_radius * 2,0,0])cylinder(r=corner_radius,h=triangle_height);
          translate([0,side2 - corner_radius * 2,0])cylinder(r=corner_radius,h=triangle_height);  
    }
  }
}
right_triangle(100,100,1,10);

method 2
rotate_extrude(angle=360, convexity=10, $fn = 100)
translate([40, 0]) polygon(points=[[0,0],[10,10],[10,0]]);

method 3
cylinder(20,20,20,$fn=3);


邏輯判斷和程式延用

for function program module 可重用的模組或函式,放在xxx.scad檔案,例如2d.scad,使用方式,use <2d .scad="">;

STL

讀取STL方式
在windows中要用\\兩條斜線 不能直接讀取TL檔案。讀取STL方式 import("C:\\Users\\USER\\Desktop\\3d\\peter_sword.stl"); preview

轉成STL
design render 產生STL檔案 File/Export/Export as STL

其他

經典教材(有德文版) 連結
光學元件 連結
範例2(OpenSCAD搭配OpenCASE )。
參考 下載位置教學文件 、網站文件 、 林信良  WIKI

沒有留言:

張貼留言