diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 0711a95..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.FCBak diff --git a/PowerLoader.FCStd b/PowerLoader.FCStd deleted file mode 100644 index f18f20c..0000000 Binary files a/PowerLoader.FCStd and /dev/null differ diff --git a/power-loader.scad b/power-loader.scad new file mode 100644 index 0000000..d06f8eb --- /dev/null +++ b/power-loader.scad @@ -0,0 +1,124 @@ +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; + +module _end_of_customizer() {} + +$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) +color("#777") +overall_cylinder(); + +module bottom() { + for(i = [0:5]) { + rotate([0, 0, i / 6 * 360]) + bottom_part(); + } +} + +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); + } +} + +color("#dd08") +*bottom(); + +module top() { + for(i = [0:5]) { + rotate([0, 0, i / 6 * 360]) + top_part(); + } +} + +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], + ]); + } +} + +color("#4d48") +translate([0, 0, bottom_height]) +top(); + +*if($preview) +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); +}