105 lines
No EOL
2.6 KiB
OpenSCAD
105 lines
No EOL
2.6 KiB
OpenSCAD
include <BOSL2/std.scad>
|
|
|
|
h = 240;
|
|
bot_h = 110;
|
|
d = 70;
|
|
t = 2;
|
|
conn_h = 10;
|
|
|
|
conn_slop = 0.25;
|
|
|
|
hex_size = 15;
|
|
hex_t = 1.5;
|
|
|
|
$fn = 360;
|
|
|
|
module column_hex(w, h, hex_size, t) {
|
|
fwd(50) for(i=[0:1:h/(hex_size+t)]) {
|
|
up(i*(hex_size+t)) left(i%2 * (hex_size+t)/2) union() {
|
|
for (j=[-w:hex_size+t:w]) {
|
|
right(j) rotate([270,90,0]) cylinder(d=hex_size, $fn=6, h=100);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
union() {
|
|
difference() {
|
|
cyl(d=d, h=h);
|
|
difference() {
|
|
cyl(d=d-t*2, h=h+0.1);
|
|
down(h/2 - bot_h) difference() {
|
|
cyl(d=d, h=t);
|
|
xrot(90) up(hex_size/4) column_hex(d,d/2,hex_size/2, hex_t);
|
|
}
|
|
}
|
|
left(d/2+0.1) down(h/2+0.1) back(t/2) cube([d+1, d+1, h+1]);
|
|
}
|
|
|
|
difference() {
|
|
cuboid([d,t,h]);
|
|
down(h - bot_h) cuboid([d+1,t+1,h]);
|
|
down(h/2 - bot_h) column_hex(d,h-bot_h-1,hex_size,hex_t);
|
|
}
|
|
}
|
|
|
|
left(d*2) union() {
|
|
difference() {
|
|
cyl(d=d, h=h);
|
|
cyl(d=d-t*2, h=h+0.1);
|
|
left(d/2+0.1) down(h/2+0.1) back(t/2) cube([d+1, d+1, h+1]);
|
|
}
|
|
|
|
difference() {
|
|
cuboid([d,t,h]);
|
|
//down(h - bot_h) cuboid([d+1,t+1,h]);
|
|
down(h/2) column_hex(d,h-1,hex_size,hex_t);
|
|
}
|
|
|
|
down(h/2) difference() {
|
|
union() {
|
|
cyl(d=d-t*2 - conn_slop, h=conn_h*2);
|
|
up(conn_h/2) cyl(d=d, h=conn_h);
|
|
up(conn_h/2) cuboid([d,t,conn_h]);
|
|
}
|
|
difference() {
|
|
cyl(d=d-t*4, h=conn_h*2 + 1);
|
|
fwd(t) cuboid([d,t,conn_h]*2);
|
|
}
|
|
left(d/2+0.1) down(h+0.1) fwd(t/2 + conn_slop) cube([d+1, d+1, h*2+1]);
|
|
}
|
|
down(h/2) up(conn_h/2) fwd(t/2) cuboid([d,t*2,conn_h]);
|
|
|
|
}
|
|
|
|
but_d = 35;
|
|
but_h = 28;
|
|
but_cap = 16;
|
|
|
|
// na butelke
|
|
left(d*4) union() {
|
|
down(h/2) difference() {
|
|
union() {
|
|
cyl(d=d-t*2 - conn_slop, h=conn_h*2);
|
|
up(conn_h/2) cyl(d=d, h=conn_h);
|
|
up(conn_h/2) cuboid([d,t,conn_h]);
|
|
}
|
|
difference() {
|
|
cyl(d=d-t*4, h=conn_h*2 + 1);
|
|
fwd(t) cuboid([d,t,conn_h]*2);
|
|
}
|
|
left(d/2+0.1) down(h+0.1) fwd(t/2 + conn_slop) cube([d+1, d+1, h*2+1]);
|
|
}
|
|
down(h/2) up(conn_h/2) fwd(t/2) cuboid([d,t*2,conn_h]);
|
|
|
|
// na butelke dziura
|
|
down(h/2) up(conn_h*3/4) difference() {
|
|
union() {
|
|
cyl(d=d, h=conn_h/2);
|
|
up(but_h/2) fwd(d/4) cyl(d=but_d + 2*t, h=but_h);
|
|
}
|
|
left(d/2+0.1) down(h+0.1) fwd(t/2 + conn_slop) cube([d+1, d+1, h*2+1]);
|
|
up(but_h/2) fwd(d/4) cyl(d=but_d, h=but_h+10);
|
|
up(but_h/2) cuboid([but_cap,d/4,but_h+1]);
|
|
}
|
|
} |