2018年7月18日

用openscad畫個蛋



同事之前帶個專題研究,要用3D印表機印出蛋模型來做一些研究。不過要怎麼做個蛋模型呢?於是我出了主意,不如用OpenScad來畫蛋吧。只要修改一些參數,就可以做出不同的蛋模型。

以下這個程式碼,基本上只要修改r0到r10的參數就可以了。
整個程式的意義是畫出11個圓形,每個圓形間隔100(由參數space設定),每個圓形的半徑就分別是r0到r10。11個圓形疊在一起後,再用hull把那些圓形包起來,就會像一個卵形。下圖的粉紅色區塊就是還沒有被hull包起來的樣子。接下來再用一些程式把2D平面的卵形變成立體的卵。







r0 = 0;
r1 = 413/2;
r2 = 534/2;
r3 = 567/2;
r4 = 557/2;
r5 = 498/2;
r6 = 372/2;
r7 = 0;
r8 = 0;
r9 = 0;
r10 = 0;

space =100;
trans = max (r0,r1, r2,r3,r4,r5,r6,r7,r8,r9,r10);
bigSqure = 4000;
rotate_extrude(covexity= 10){
    intersection(){
    square(bigSqure);
    rotate([0,0,90])
    translate([trans,0,0])
        hull(){
        translate ([space*0,0,0])  circle(r0,center = true,$fn = 100);
        translate ([space*1,0,0])  circle(r1,center = true,$fn = 100);
        translate ([space*2,0,0])  circle(r2,center = true,$fn = 100);
        translate ([space*3,0,0])  circle(r3,center = true,$fn = 100);
        translate ([space*4,0,0])  circle(r4,center = true,$fn = 100);
        translate ([space*5,0,0])  circle(r5,center = true,$fn = 100);
        translate ([space*6,0,0])  circle(r6,center = true,$fn = 100);
        translate ([space*7,0,0])  circle(r7,center = true,$fn = 100);
        translate ([space*8,0,0])  circle(r8,center = true,$fn = 100);
        translate ([space*9,0,0])  circle(r9,center = true,$fn = 100);
        translate ([space*10,0,0])  circle(r10,center = true,$fn = 100);


        }
    }
}