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;
|
||||
|
||||
bumper_diameter = 85;
|
||||
body_diameter = 69;
|
||||
m3nut_diameter = 6.5;
|
||||
include <constants.scad>
|
||||
use <cap.scad>
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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>;
|
||||
|
||||
|
||||
$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);
|
||||
}
|
||||
|
|
91
top.scad
91
top.scad
|
@ -1,75 +1,42 @@
|
|||
include <constants.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() {
|
||||
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue