Compare commits
4 Commits
Author | SHA1 | Date |
---|---|---|
Remi Rampin | ed0a319cbe | |
Remi Rampin | 3a99837e24 | |
Remi Rampin | 840f9f2b55 | |
Remi Rampin | 0515c30253 |
|
@ -1 +0,0 @@
|
|||
*.FCBak
|
Binary file not shown.
|
@ -0,0 +1,152 @@
|
|||
overall_cylinder_diam = 41;
|
||||
chamber_to_center = 6.96;
|
||||
chamber_diam = 11.45;
|
||||
|
||||
bottom_height = 3;
|
||||
|
||||
top_height = 20;
|
||||
|
||||
opening_sep = 0.1;
|
||||
|
||||
border = 1;
|
||||
|
||||
funnel_size = 1;
|
||||
|
||||
part = 0;
|
||||
|
||||
part_sep = 0.4;
|
||||
|
||||
module _end_of_customizer() {}
|
||||
|
||||
assert(part >= 0 && part <= 2);
|
||||
|
||||
$fn = $preview?30:80;
|
||||
|
||||
module overall_cylinder() {
|
||||
translate([0, 0, -20])
|
||||
difference() {
|
||||
cylinder(d = overall_cylinder_diam, h = 20);
|
||||
|
||||
for(i = [0:5]) {
|
||||
rotate([0, 0, i/6*360])
|
||||
translate([chamber_to_center + chamber_diam/2, 0, -1])
|
||||
cylinder(d = chamber_diam, h = 22);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($preview && part == 0)
|
||||
color("#777")
|
||||
overall_cylinder();
|
||||
|
||||
module bottom() {
|
||||
difference() {
|
||||
union() {
|
||||
for(i = [0:5]) {
|
||||
rotate([0, 0, i / 6 * 360])
|
||||
bottom_part();
|
||||
}
|
||||
}
|
||||
|
||||
translate([0, 0, bottom_height])
|
||||
connection(true);
|
||||
}
|
||||
}
|
||||
|
||||
center_to_bottom_opening_center = chamber_to_center + chamber_diam / 2;
|
||||
bottom_opening_diam = center_to_bottom_opening_center * sin(360 / 12) - opening_sep;
|
||||
|
||||
module bottom_part() {
|
||||
difference() {
|
||||
union() {
|
||||
rotate([0, 0, 360/12])
|
||||
linear_extrude(bottom_height)
|
||||
polygon([
|
||||
[0, 0],
|
||||
[overall_cylinder_diam / 2 * cos(360 / 12), overall_cylinder_diam / 2 * sin(360 / 12)],
|
||||
[overall_cylinder_diam / 2 * cos(360 / 12), -overall_cylinder_diam / 2 * sin(360 / 12)],
|
||||
]);
|
||||
|
||||
translate([center_to_bottom_opening_center, 0, -funnel_size])
|
||||
cylinder(
|
||||
d1 = bottom_opening_diam,
|
||||
d2 = bottom_opening_diam + funnel_size,
|
||||
h = funnel_size
|
||||
);
|
||||
}
|
||||
|
||||
translate([center_to_bottom_opening_center, 0, -1 - funnel_size])
|
||||
cylinder(d = bottom_opening_diam, h = bottom_height + 2 + funnel_size);
|
||||
|
||||
rotate([0, 0, 360/6])
|
||||
translate([center_to_bottom_opening_center, 0, -1 - funnel_size])
|
||||
cylinder(d = bottom_opening_diam, h = bottom_height + 2 + funnel_size);
|
||||
}
|
||||
}
|
||||
|
||||
if(part == 0 || part == 1)
|
||||
color("#dd08")
|
||||
bottom();
|
||||
|
||||
module top() {
|
||||
for(i = [0:5]) {
|
||||
rotate([0, 0, i / 6 * 360])
|
||||
top_part();
|
||||
}
|
||||
|
||||
connection(false);
|
||||
}
|
||||
|
||||
module top_part() {
|
||||
difference() {
|
||||
linear_extrude(top_height)
|
||||
polygon([
|
||||
[0, 0],
|
||||
[overall_cylinder_diam / 2 * cos(360 / 12), overall_cylinder_diam / 2 * sin(360 / 12)],
|
||||
[overall_cylinder_diam / 2 * cos(360 / 12), -overall_cylinder_diam / 2 * sin(360 / 12)],
|
||||
]);
|
||||
|
||||
top_part_hollow();
|
||||
}
|
||||
}
|
||||
|
||||
module top_part_hollow() {
|
||||
adjusted_radius = overall_cylinder_diam / 2 - border;
|
||||
|
||||
hull() {
|
||||
translate([center_to_bottom_opening_center, 0, 0])
|
||||
cylinder(d = bottom_opening_diam, h = 0.1);
|
||||
|
||||
translate([0, 0, top_height - 0.1 - border])
|
||||
linear_extrude(0.1)
|
||||
polygon([
|
||||
[border, 0],
|
||||
[adjusted_radius * cos(360 / 12), adjusted_radius * sin(360 / 12) - border / 2],
|
||||
[adjusted_radius * cos(360 / 12), -adjusted_radius * sin(360 / 12) + border / 2],
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
if(part == 0 || part == 2)
|
||||
color("#4d48")
|
||||
translate([0, 0, bottom_height + part_sep])
|
||||
top();
|
||||
|
||||
module connection(hole) {
|
||||
sep_hole = hole?part_sep:0;
|
||||
sep_screw = hole?0:part_sep;
|
||||
|
||||
translate([0, 0, -1.5 - sep_screw * 2])
|
||||
cylinder(d = 4 + sep_hole, h = 1.5 + sep_screw * 2);
|
||||
|
||||
translate([0, 0, -3 - sep_screw * 2])
|
||||
cylinder(d1 = 8 + sep_hole, d2 = 4 + sep_hole, h = 1.5);
|
||||
}
|
||||
|
||||
if($preview && part == 1)
|
||||
color("#f008")
|
||||
for(i = [0:5]) {
|
||||
rotate([0, 0, i/6*360 + 360 / 12])
|
||||
translate([center_to_bottom_opening_center, 0, 01])
|
||||
cylinder(d = bottom_opening_diam, h = bottom_height + 2);
|
||||
}
|
Loading…
Reference in New Issue