18 三月

藍牙喇叭 3D 設計

講緊嘅藍牙喇叭就係喺「鴨記」賣緊嘅貨,喱隻蛋形藍牙喇叭,我係用 OpenSCAD 搞嘅,大家可以用其他軟件搞,無所謂嘅,邊隻軟件熟手就用邊隻。

先嚟睇啲 codes,因為 OpenSCAD 係用 code 嘅,好似寫 program 咁,用一段一段 code 去砌個 3D 模型出嚟,啱我口味:

$fn=160;                        // 控制外売光滑程度

union(){
    difference(){
        union(){                        // 上下身合體
            // 上半身
            scale([0.9,1.25,-1.20])         // 最後,變 oval 形
            difference(){                   // 關始,先用 sphere 起個形狀
                translate([0,0,0])              // 外碗
                    sphere(r=50);
                translate([0,0,0])              // 內碗,3mm 厚
                    sphere(r=46);
                translate([-100,-100,0])        // 切走下半身
                    cube([400,400,400]);
            }
            
            // 下半身
            scale([0.9,1.25,0.7])           // 最後,變 oval 形
            difference(){                   // 關始,先用 sphere 起個形狀
                translate([0,0,0])              // 外碗
                    sphere(r=50);
                translate([0,0,0])              // 內碗,3mm 厚
                    sphere(r=46);
                translate([-100,-100,0])        // 切走上半身
                    cube([400,400,400]);
                translate([-100,-100,-435])     // 切個平底
                    cube([400,400,400]);
            }
        }

        // 左邊喇叭窗口
        translate([0,-32,22])
        rotate([50,0,0])
            cylinder(24, 25, 35);
        // 右邊喇叭窗口
        translate([0,32,22])
        rotate([-50,0,0])
            cylinder(24, 25, 35);
        
        // 切開一半嚟睇位,嚟真嘅時候要 comment out
        //translate([0,-100,-100])        // 前後
        //cube(300,300,300);
        //translate([-100,0,-100])        // 左右
        //cube(300,300,300);
        
        // 切個 switch box 位
        translate([-40,0,-23])
        difference(){
            translate([-1,0,1])
            cube([33,30,44],true);
        }
        
        // 3*2 磁石
        //translate([29.45,0,-24.75])        // 東
        //cylinder(2.5,1.5,1.5);
        
        translate([20,30,-24.75])          // 東南
        cylinder(2.5,1.5,1.5);
        
        translate([-20,30,-24.75])         // 西南
        cylinder(2.5,1.5,1.5);

        //translate([-29.45,0,-24.75])       // 西
        //cylinder(2.5,1.5,1.5);
        
        translate([-20,-30,-24.75])        // 西北
        cylinder(2.5,1.5,1.5);
        
        translate([20,-30,-24.75])         // 東北
        cylinder(2.5,1.5,1.5);
    }

    // 左邊喇叭漏斗:淨係要個漏斗同個外碗嘅 intersection
    intersection(){
        translate([0,-32,22])
        rotate([50,0,0])
        difference(){
            cylinder(24, 27, 35);
            translate([0,0,-1])
                cylinder(26, 16.5, 27.5);
        }
        scale([0.9,1.25,-1.20])
            translate([0,0,0])
                sphere(r=50);
    }
    // 右邊喇叭漏斗:淨係要個漏斗同個外碗嘅 intersection
    intersection(){
        translate([0,32,22])
        rotate([-50,0,0])
        difference(){
            cylinder(24, 27, 35);
            translate([0,0,-1])
                cylinder(28, 16.5, 27.5);
        }
        scale([0.9,1.25,-1.20])
            translate([0,0,0])
                sphere(r=50);
    }

    /// start: 個 switch box
    intersection(){
        translate([-40,0,-23])
        difference(){
            translate([-1,0,1])
            cube([24,30,44],true);
            
            translate([-2,0,0])
            color("red")
            cube([27,28,44],true);
        }
        
        scale([0.9,1.25,0.7])           // 最後,變 oval 形
        difference(){                   // 關始,先用 sphere 起個形狀
            translate([0,0,0])              // 外碗
                sphere(r=50);
            translate([-100,-100,0])        // 切走上半身
                cube([400,400,400]);
            translate([-100,-100,-435])     // 切個平底
                cube([400,400,400]);
        }    
    }
    /// end: 個 switch box
}

 

慢慢嚟,先喺 OpenSCAD 開個 new 設計, 將全部 code 抄入去,preview 一下,出現下圖:

如果你睇唔倒,咁你唔使繼續住,去查下有咩問題先,我用 macOS 嘅,不過 OpenSCAD macOS 同 Windows 10 都冇咩唔同,唔應該出唔倒嘅,自己執生。 😆

先解釋 #7~15::

  • #9~10 係畫個圓形立體(A)
  • #11~12 係畫個細 3mm 嘅圓形立體(B)
  • #13~14 係畫個正方體,條件係要大過 A 嘅(C)
  • #8 係將 A 淢 B,變成中空嘅圓形立體,再淢 C,變成冇下身嘅空売
  • #7 係將 #8~15 得出嚟嘅圓売變形,變成蛋売

你可以開個新設計,淨係抄喱段落去睇睇個效果:

明白哂?咁 #18~28 係下半身,跟上半身嘅分別係個變形比例唔同啫。

一里通百里明,下面啲 code 我就唔再講解喇,自己推敲。 :mrgreen:

IT 老人
本來想用 IT 聖誕老人,不過一來感覺有啲長,二來咪每年得 12 月會出現?太少了,於是,IT 老人 就剛剛好。 :)

咁,掂解叫老人?因為喺哩行資歷深囉。不過,學無前後,達者為先。(我信架)

發表回覆