Add docs
This commit is contained in:
commit
2fa95acb83
|
@ -0,0 +1,2 @@
|
||||||
|
No rights reserved.
|
||||||
|
I place these files in the public domain.
|
|
@ -0,0 +1,14 @@
|
||||||
|
This is a head restraint button I made for a 2019 Chevrolet Bolt.
|
||||||
|
|
||||||
|
When we bought ours, used,
|
||||||
|
one of these was missing.
|
||||||
|
What's here now does a good job staying in the hole,
|
||||||
|
and flips the headrest back.
|
||||||
|
The one I have in there now sticks a little,
|
||||||
|
so you have to bang it or massage it to pop back out,
|
||||||
|
and stop triggering the tilt mechanism.
|
||||||
|
But it's good enough:
|
||||||
|
we hardly ever use this button anyway.
|
||||||
|
|
||||||
|
Print in PETG or ABS or something that can withstand a lot of heat.
|
||||||
|
You don't need supports.
|
|
@ -0,0 +1,85 @@
|
||||||
|
button_od = 23.6; // Outside diameter of button
|
||||||
|
tab_offset = 22; // How far down the button the little tabs are
|
||||||
|
tab_width = 4; // Size of the tabs
|
||||||
|
tab_protrusion = 1.5; // How far tabs stick out
|
||||||
|
guide_size = 2.5; // How wide the guide channels are
|
||||||
|
wall_width = 1.8; // How thick should the walls be
|
||||||
|
rod_od = 3.5; // The outside diameter of the rod
|
||||||
|
|
||||||
|
button_curvature_depth = 5;
|
||||||
|
button_wall = 1;
|
||||||
|
|
||||||
|
|
||||||
|
// Computed values
|
||||||
|
button_id = button_od - wall_width*2;
|
||||||
|
rod_width = rod_od / sqrt(2); // It's easier to print if the rod is square
|
||||||
|
button_height = 24; // How tall the button is
|
||||||
|
inset_height = button_curvature_depth + button_wall;
|
||||||
|
|
||||||
|
module rod(width, height) {
|
||||||
|
translate([-width/2, -width/2, 0]) cube([width, width, height]);
|
||||||
|
}
|
||||||
|
|
||||||
|
rotate(180, [1, 0, 0]) {
|
||||||
|
difference() {
|
||||||
|
union() {
|
||||||
|
// Outer button
|
||||||
|
difference() {
|
||||||
|
cylinder(h=button_height, r=button_od/2, $fn=360);
|
||||||
|
|
||||||
|
// Inner cup for the rod
|
||||||
|
translate([0, 0, inset_height]) {
|
||||||
|
rod(rod_width + 0.2, button_height);
|
||||||
|
}
|
||||||
|
|
||||||
|
// There's this guiderail thingy
|
||||||
|
for (a = [30, 150, 270]) {
|
||||||
|
rotate(a=a, v=[0,0,1]) {
|
||||||
|
translate([button_id/2 + wall_width - 0.8, -guide_size/2, 0]) {
|
||||||
|
cube([wall_width, guide_size, button_height+1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// The part you press with your finger
|
||||||
|
rotate(a=-60, v=[0,0,1]) {
|
||||||
|
// The button is actually sloped
|
||||||
|
rotate(a=-4, v=[1,0,0]) {
|
||||||
|
translate([-button_od, -button_od, -1.185]) {
|
||||||
|
cube([button_od*2, button_od*2, 2]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// A little curvature on outside where you press the button
|
||||||
|
resize([button_od*.75, button_od*.75, button_curvature_depth+3]) {
|
||||||
|
sphere(r=10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// There's a cutout on the right side at the end. I just eyeballed it.
|
||||||
|
rotate(a=-50, v=[0,0,1]) {
|
||||||
|
translate([button_od*.39, -button_od/2, button_height-4]) {
|
||||||
|
cube(button_od);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tabs on the side for stops
|
||||||
|
intersection() {
|
||||||
|
union() {
|
||||||
|
for (a = [0, 180]) {
|
||||||
|
rotate(a=a, v=[0,0,1]) {
|
||||||
|
translate([(button_od - wall_width)/2, 0, tab_offset+1]) {
|
||||||
|
cube([wall_width+tab_protrusion, tab_width, 2], center=true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cylinder(h=button_height, r1=button_od, r2=button_od/2, $fn=360);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
rod_od = 3.5; // The outside diameter of the rod
|
||||||
|
rod_width = rod_od / sqrt(2); // It's easier to print if the rod is square
|
||||||
|
rod_height = 92; // How long the rod is
|
||||||
|
|
||||||
|
module rod(width, height) {
|
||||||
|
translate([-width/2, -width/2, 0]) cube([width, width, height]);
|
||||||
|
}
|
||||||
|
|
||||||
|
translate([0, rod_height/2, 0]) {
|
||||||
|
rotate(a=90, v=[1, 0, 0]) {
|
||||||
|
rod(rod_width, rod_height);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue