Second iteration
Cleand up sources Improved thread for simpler printing Added grove to hide the pipe ende Improved lid
This commit is contained in:
parent
ffa8f0f53b
commit
12ee92fa47
56
bottom.scad
56
bottom.scad
|
@ -1,57 +1,13 @@
|
||||||
$fn = 90;
|
include <constants.scad>
|
||||||
|
use <cap.scad>
|
||||||
bumper_diameter = 85;
|
|
||||||
body_diameter = 69;
|
|
||||||
m3nut_diameter = 6.5;
|
|
||||||
|
|
||||||
difference() {
|
difference() {
|
||||||
|
|
||||||
// Cap
|
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Make the cap hollow
|
// Make the cap hollow
|
||||||
translate([0, 0, -10 + 2.5])
|
translate([0, 0, -1.5 * height_unit])
|
||||||
cylinder(r = (body_diameter / 2) - 5,
|
cylinder(r = body_hole_diameter / 2,
|
||||||
h = 20.1,
|
h = 4 * height_unit + 0.1,
|
||||||
center = true);
|
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -0,0 +1,80 @@
|
||||||
|
include <constants.scad>;
|
||||||
|
|
||||||
|
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();
|
|
@ -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;
|
44
lid.scad
44
lid.scad
|
@ -1,33 +1,39 @@
|
||||||
|
include <constants.scad>;
|
||||||
|
|
||||||
|
use <cap.scad>;
|
||||||
use <threads.scad>;
|
use <threads.scad>;
|
||||||
|
|
||||||
|
|
||||||
$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() {
|
difference() {
|
||||||
union() {
|
union() {
|
||||||
translate([0, 0, 1.25])
|
translate([0, 0, 0.25 * height_unit])
|
||||||
cylinder(r = body_diameter / 2 - 2.5 - tolerance,
|
cylinder(r = lid_diameter / 2 - lid_tolerance,
|
||||||
h=2.6,
|
h=0.5 * height_unit,
|
||||||
center=true);
|
center=true);
|
||||||
|
|
||||||
translate([0, 0, -thread_lenght])
|
translate([0, 0, -thread_lenght_lid])
|
||||||
metric_thread(thread_diameter,
|
metric_thread(thread_diameter - thread_tolerance,
|
||||||
thread_pitch,
|
thread_pitch,
|
||||||
thread_lenght);
|
thread_lenght_lid);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(pos = [-15, 15]) {
|
union() {
|
||||||
translate([pos, 0, 2.5 + 2.5])
|
for(pos = [-3 * height_unit, 3 * height_unit]) {
|
||||||
sphere(r = 5, center=true);
|
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);
|
||||||
}
|
}
|
||||||
|
|
91
top.scad
91
top.scad
|
@ -1,75 +1,42 @@
|
||||||
|
include <constants.scad>;
|
||||||
|
|
||||||
use <threads.scad>;
|
use <threads.scad>;
|
||||||
|
use <cap.scad>;
|
||||||
|
|
||||||
$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() {
|
difference() {
|
||||||
|
|
||||||
// Cap
|
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Make the cap hollow
|
|
||||||
translate([0, 0, -10])
|
|
||||||
cylinder(r = (body_diameter / 2) - 5,
|
|
||||||
h = 15.1,
|
|
||||||
center = true);
|
|
||||||
|
|
||||||
// Hole for the lid
|
// Hole for the lid
|
||||||
union() {
|
union() {
|
||||||
translate([0, 0, 5 + 1.25])
|
// Actual lid hole
|
||||||
cylinder(r = body_diameter / 2 - 2.5, h=2.6, center=true);
|
translate([0, 0, 1.25 * height_unit])
|
||||||
translate([0, 0, -2.5])
|
cylinder(r = lid_diameter / 2,
|
||||||
metric_thread(thread_diameter,
|
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_pitch,
|
||||||
thread_lenght,
|
thread_lenght_top,
|
||||||
internal=true);
|
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue