Impractical electromechanical display
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

58 lines
1.4 KiB

thickness = 2;
centre_d = 7;
middle_d = 5.5;
outer_d = 4;
length = 32;
$fn = 36;
rim = 2;
rim_thickness = 2;
clearance = 0.1;
shaft_radius = 2;
shaft_length = 5;
groove_width = 1;
groove_length = 3;
outer_centre = length/2 - outer_d/2;
screw_d = 2.4;
screw_depth = 1;
delta = 0.1;
module horn(thickness, length, centre_d, middle_d, outer_d) {
cylinder(h=thickness, d=centre_d);
translate([-outer_centre, 0, 0])
cylinder(h=thickness, d=outer_d);
translate([outer_centre, 0, 0])
cylinder(h=thickness, d=outer_d);
linear_extrude(height = thickness)
polygon(points=[
[0, -middle_d/2],
[-outer_centre, -outer_d/2],
[-outer_centre, outer_d/2],
[0, middle_d/2],
[outer_centre, outer_d/2],
[outer_centre, -outer_d/2]
]);
}
difference() {
horn(thickness+rim, length+rim, centre_d+rim, middle_d+rim, outer_d+rim);
translate([0, 0, -delta])
horn(thickness+delta, length + clearance, centre_d + clearance, middle_d + clearance, outer_d + clearance);
translate([0, 0, thickness-delta])
cylinder(h=screw_depth+delta, d=screw_d);
}
difference() {
translate([0, 0, thickness + rim - delta])
cylinder(h=delta + shaft_length, r = shaft_radius);
translate([-shaft_radius*3/2, -groove_width/2, thickness + rim + shaft_length - groove_length])
cube([shaft_radius*3, groove_width, groove_length+delta]);
}