diff --git a/bottom.scad b/bottom.scad index 35aacee..8cb0a18 100644 --- a/bottom.scad +++ b/bottom.scad @@ -1,57 +1,13 @@ -$fn = 90; - -bumper_diameter = 85; -body_diameter = 69; -m3nut_diameter = 6.5; +include +use difference() { - // Cap - union() { - cylinder(r = bumper_diameter / 2, - h = 5, - center = true); - - translate([0, 0, -5]) - cylinder(r2 = bumper_diameter / 2, - r1 = body_diameter /2, - h = 5, - center = true); - - translate([0, 0, 5]) - cylinder(r1 = bumper_diameter / 2, - r2 = body_diameter /2, - h = 5, - center = true); - - translate([0, 0, -5 - 7.5]) - cylinder(r = body_diameter / 2, - h = 10, - center = true); - } + cap(); // Make the cap hollow - translate([0, 0, -10 + 2.5]) - cylinder(r = (body_diameter / 2) - 5, - h = 20.1, + translate([0, 0, -1.5 * height_unit]) + cylinder(r = body_hole_diameter / 2, + h = 4 * height_unit + 0.1, center = true); - - for(angle = [0, 90, 180, 270]) { - rotate([0,0,angle]) - translate([0, - body_diameter / 2 - 1.8 - 2.5, - -10 - m3nut_diameter / 2]) - rotate([90, 0 ,0]) - union() { - cylinder(r = m3nut_diameter / 2, - h=3.6, - center=true, - $fn=6); - - translate([0,0,-3]) - cylinder(r = 3.5/2, - h=6, - center=true); - } - } } \ No newline at end of file diff --git a/cap.scad b/cap.scad new file mode 100644 index 0000000..24221d3 --- /dev/null +++ b/cap.scad @@ -0,0 +1,80 @@ +include ; + +module cap() { + difference() { + + // Actual cap + union() { + // Bumper + cylinder(r = bumper_diameter / 2, + h = height_unit, + center = true); + + // Lower cone + translate([0, 0, - 1.5 * height_unit]) + cylinder(r2 = bumper_diameter / 2, + r1 = body_diameter /2, + h = height_unit * 2, + center = true); + + // Upper cone + translate([0, 0, height_unit]) + cylinder(r1 = bumper_diameter / 2, + r2 = body_diameter /2, + h = height_unit, + center = true); + + // End piece that goes into the tube + translate([0, 0, -2.5 * height_unit]) + cylinder(r = body_diameter / 2, + h = 2 * height_unit, + center = true); + } + + // Make a grove to slide the tube into + translate([0, 0, -2 * height_unit]) + difference() { + cylinder(r = tube_outer_diameter / 2, + h = height_unit, + center = true); + + cylinder(r = body_diameter / 2, + h = height_unit + 0.1, + center = true); + } + + // Make the end piece of the cap hollow + translate([0, 0, -2.5 * height_unit]) + cylinder(r = body_hole_diameter / 2, + h = 2 * height_unit + 0.1, + center = true); + + + // Place the nuts + nut_y_offset = body_diameter / 2 + - (body_diameter/2 - body_hole_diameter/2) + + m3nut_depth / 2 - 0.5; + + for(angle = [0, 90, 180, 270]) { + rotate([0,0,angle]) + translate([0, + nut_y_offset, + - 2.5 * height_unit]) + rotate([90, 0 ,0]) + //This is one nut and the hole attched to it + union() { + cylinder(r = m3nut_diameter / 2, + h = m3nut_depth, + center = true, + $fn = 6); + + translate([0, 0, -m3hole_depth / 2 -m3nut_depth / 2]) + cylinder(r = m3hole_diameter / 2, + h = m3hole_depth + 0.1, + center = true); + }; + } + } +} + +cap(); \ No newline at end of file diff --git a/constants.scad b/constants.scad new file mode 100644 index 0000000..8120d41 --- /dev/null +++ b/constants.scad @@ -0,0 +1,25 @@ +$fn = 90; + +bumper_diameter = 85; +body_diameter = 70; +body_hole_diameter = body_diameter - 10; + +tube_outer_diameter = 75; + +m3nut_diameter = 6.5; +m3nut_depth = 3.6; + +m3hole_diameter = 3.5; +m3hole_depth = (body_diameter - body_hole_diameter) / 2 - m3nut_depth + 0.5; + +height_unit = 5; + +thread_diameter = body_diameter - 10; +thread_hole_diameter = thread_diameter - 5; +thread_pitch = 3; +thread_lenght_top = 12.5; +thread_lenght_lid = 7.5; +thread_tolerance = 0.1; + +lid_diameter = body_diameter - 5; +lid_tolerance = 0.1; diff --git a/lid.scad b/lid.scad index 0bf3f7e..668a02b 100644 --- a/lid.scad +++ b/lid.scad @@ -1,33 +1,39 @@ +include ; + +use ; use ; -$fn = 90; -bumper_diameter = 85; -body_diameter = 69; -m3nut_diameter = 6.5; - -tolerance = 0.5; - -thread_diameter = body_diameter - 10; -thread_pitch = 3; -thread_lenght = 7.5; difference() { union() { - translate([0, 0, 1.25]) - cylinder(r = body_diameter / 2 - 2.5 - tolerance, - h=2.6, + translate([0, 0, 0.25 * height_unit]) + cylinder(r = lid_diameter / 2 - lid_tolerance, + h=0.5 * height_unit, center=true); - translate([0, 0, -thread_lenght]) - metric_thread(thread_diameter, + translate([0, 0, -thread_lenght_lid]) + metric_thread(thread_diameter - thread_tolerance, thread_pitch, - thread_lenght); + thread_lenght_lid); } - for(pos = [-15, 15]) { - translate([pos, 0, 2.5 + 2.5]) - sphere(r = 5, center=true); + union() { + for(pos = [-3 * height_unit, 3 * height_unit]) { + translate([pos, 0, height_unit]) + sphere(r = 1.5 * height_unit, center=true); + } + translate([0, 0, height_unit]) + rotate([0, 90, 0]) + cylinder(r = 1.5 * height_unit, h=6 * height_unit, center=true); } + + + + //Make the thread hollow + translate([0, 0, - 1.5 * height_unit]) + cylinder(r = thread_diameter / 2 - 5, + h = 1.5 * height_unit + 0.01, + center=true); } diff --git a/top.scad b/top.scad index 421cfb4..cc40424 100644 --- a/top.scad +++ b/top.scad @@ -1,75 +1,42 @@ +include ; + use ; +use ; -$fn = 90; - -bumper_diameter = 85; -body_diameter = 69; -m3nut_diameter = 6.5; - -thread_diameter = body_diameter - 10; -thread_pitch = 3; -thread_lenght = 7.5; difference() { - // Cap - union() { - cylinder(r = bumper_diameter / 2, - h = 5, - center = true); - - translate([0, 0, -5]) - cylinder(r2 = bumper_diameter / 2, - r1 = body_diameter /2, - h = 5, - center = true); - - translate([0, 0, 5]) - cylinder(r1 = bumper_diameter / 2, - r2 = body_diameter /2, - h = 5, - center = true); - - translate([0, 0, -5 - 7.5]) - cylinder(r = body_diameter / 2, - h = 10, - center = true); - } + cap(); - // Make the cap hollow - translate([0, 0, -10]) - cylinder(r = (body_diameter / 2) - 5, - h = 15.1, - center = true); - // Hole for the lid union() { - translate([0, 0, 5 + 1.25]) - cylinder(r = body_diameter / 2 - 2.5, h=2.6, center=true); - translate([0, 0, -2.5]) - metric_thread(thread_diameter, + // Actual lid hole + translate([0, 0, 1.25 * height_unit]) + cylinder(r = lid_diameter / 2, + h = 0.5 * height_unit + 0.01, + center = true); + + // Add a little bevel to smooth the thread start + translate([0, 0, (0.125 + 0.75) * height_unit]) + cylinder(r2 = lid_diameter / 2, + r1 = thread_diameter / 2, + h = 0.25 * height_unit + 0.01, + center = true); + + + // Metric Thread + translate([0, 0, - height_unit]) + metric_thread(thread_diameter + thread_tolerance, thread_pitch, - thread_lenght, + thread_lenght_top, internal=true); + + // Put a little support unter the thread + translate([0, 0, -height_unit]) + cylinder(r2 = thread_hole_diameter / 2, + r1 = body_hole_diameter / 2, + h = 1 * height_unit + 0.01, + center = true); } - // Screw holes - for(angle = [0, 90, 180, 270]) { - rotate([0,0,angle]) - translate([0, - body_diameter / 2 - 1.8 - 2.5, - -10 - m3nut_diameter / 2]) - rotate([90, 0 ,0]) - union() { - cylinder(r = m3nut_diameter / 2, - h=3.6, - center=true, - $fn=6); - - translate([0,0,-3]) - cylinder(r = 3.5/2, - h=6, - center=true); - } - } } \ No newline at end of file