Compare commits
No commits in common. "trunk" and "freecad" have entirely different histories.
|
@ -0,0 +1 @@
|
||||||
|
*.FCBak
|
Binary file not shown.
|
@ -1,152 +0,0 @@
|
||||||
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