200 lines
6.1 KiB
OpenSCAD
200 lines
6.1 KiB
OpenSCAD
Tuner_Spacing_4 = 64;
|
||
Post_Hole_Dia = 14.75; // 14 + tolerance
|
||
Post_Hole_Depth = 14;
|
||
Post_Top_Dia = 9;
|
||
Post_Top_Height = 17;
|
||
Tuner_Body_Dia = 17; // 16.5 + tolerance
|
||
Tuner_Body_R = Tuner_Body_Dia/2; // 16.5 + tolerance
|
||
Tuner_Body_Width = 21;
|
||
Tuner_Body_Thickness = 10; // 9.5 + tolerance
|
||
Tuner_Body_Rect_Len = Tuner_Body_Width-Tuner_Body_R;
|
||
Tuner_Tab_Angle = 60;
|
||
Tuner_Tab_Hole_Dia = 2.5;
|
||
Tuner_Tab_Thickness = 2;
|
||
Tuner_Tab_Total = 27.5;
|
||
Tuner_Tab_Hole_Inset = 2;
|
||
Tuner_Tab_Hole_Outset = (Tuner_Tab_Total-Tuner_Body_Rect_Len)-Tuner_Tab_Hole_Inset;
|
||
Engrave_String = "01γ";
|
||
// Font = "Ani";
|
||
Font = "GFS Didot";
|
||
// Font = "GFS Neohellenic";
|
||
// Font = "Liberation Mono";
|
||
// Font = "Noto Sans";
|
||
|
||
module cyl(d=10, z0=-100, z1=100, $fn=64)
|
||
translate([0,0,z0])
|
||
cylinder(h=z1-z0, r=d/2, $fn=$fn);
|
||
module c(d=10, z=0, $fn=64) // 3d circle
|
||
translate([0,0,z])
|
||
cylinder(h=0.00001, r=d/2, $fn=$fn);
|
||
|
||
module tuner_tab_hole(shrink=0) {
|
||
translate([0, -Tuner_Tab_Hole_Outset+Tuner_Tab_Hole_Dia/2])
|
||
circle((Tuner_Tab_Hole_Dia-shrink)/2, $fn=32);
|
||
}
|
||
|
||
module tuner_outline(shrink=0) {
|
||
union() {
|
||
hull() {
|
||
translate([0, -Tuner_Tab_Hole_Outset])
|
||
circle((Tuner_Tab_Hole_Dia+Tuner_Tab_Hole_Inset-shrink)/2, $fn=32);
|
||
circle(Tuner_Body_R-shrink/2, $fn=64);
|
||
}
|
||
translate([-Tuner_Body_R+shrink/2, 0])
|
||
square([Tuner_Body_Dia-shrink, Tuner_Body_Rect_Len-shrink/2]);
|
||
}
|
||
}
|
||
|
||
// color("blue") tuner_outline(-1.5);
|
||
// translate([0,0,0.001])
|
||
// color("red") tuner_outline(0);
|
||
|
||
module tuner_body() {
|
||
linear_extrude(Tuner_Body_Thickness) union() {
|
||
translate([-Tuner_Body_R, 0])
|
||
square([Tuner_Body_Dia, Tuner_Body_Rect_Len]);
|
||
circle(Tuner_Body_R, $fn=32);
|
||
}
|
||
translate([0, 0, Tuner_Body_Thickness-Tuner_Tab_Thickness])
|
||
linear_extrude(Tuner_Tab_Thickness) difference() {
|
||
hull() {
|
||
translate([0, -Tuner_Tab_Hole_Outset])
|
||
circle((Tuner_Tab_Hole_Dia+Tuner_Tab_Hole_Inset)/2, $fn=32);
|
||
circle(Tuner_Body_R, $fn=64);
|
||
}
|
||
tuner_tab_hole();
|
||
}
|
||
// handle
|
||
color(c = "red")
|
||
translate([0, Tuner_Body_Rect_Len-Tuner_Body_Thickness/2, Tuner_Body_Thickness/2])
|
||
rotate([0,-90,0])
|
||
cylinder(h = 40, r = Tuner_Body_Thickness/2);
|
||
}
|
||
|
||
module tuner_post() {
|
||
cylinder(h = Post_Hole_Depth, r = Post_Hole_Dia/2, $fn=64);
|
||
color("cyan")
|
||
translate([0, 0, Post_Hole_Depth])
|
||
difference() {
|
||
cylinder(h = Post_Top_Height, r = Post_Top_Dia/2);
|
||
translate([-1,-5, Post_Top_Height-6]) cube([2,10,7]);
|
||
}
|
||
}
|
||
|
||
module tuner() {
|
||
tuner_body();
|
||
translate([0, 0, Tuner_Body_Thickness])
|
||
tuner_post();
|
||
}
|
||
|
||
module tuner_arrange()
|
||
for (a = [90:30:180])
|
||
rotate([0,0,a])
|
||
translate([-31, 31, 0])
|
||
children();
|
||
|
||
module handle_cutouts() {
|
||
tuner_arrange()
|
||
translate([0, Tuner_Body_Rect_Len-Tuner_Body_Thickness/2, Tuner_Body_Thickness/2])
|
||
rotate([-90, 0, 90]) linear_extrude(40) hull() {
|
||
circle(Tuner_Body_Thickness/2, $fn=32);
|
||
translate([-Tuner_Body_Thickness/2, 0]) square([Tuner_Body_Thickness, 20]);
|
||
}
|
||
}
|
||
|
||
module retainer_outline()
|
||
// polygon([[-50, -10], [-45, -35], [-20, -55], [20, -55], [45, -35], [50, -10]]);
|
||
polygon(concat([for (i = [-52:1:45]) [60*sin(i), -60*cos(i)]], [[40,-5], [-40, -5], [-47, -18]]));
|
||
|
||
|
||
module part() {
|
||
module layer_bolt_holes_outer(dia=3.05, z0=-100, z1=100)
|
||
for (a = [-120:30:-60])
|
||
rotate([0,0,a])
|
||
translate([55,0,z0])
|
||
cylinder(h=z1-z0, r=dia/2, $fn=64);
|
||
module layer_bolt_holes_inner(dia=3.05, z0=-100, z1=100)
|
||
for (x = [-20,0,20])
|
||
translate([x,-10,z0])
|
||
cylinder(h=z1-z0, r=dia/2, $fn=64);
|
||
|
||
module bottom_engraving()
|
||
// translate([0,-26,1]) rotate([0,180,0]) linear_extrude(30)
|
||
translate([0,-28,1]) rotate([15,180,0]) linear_extrude(30)
|
||
text(text = Engrave_String, size = 5, halign="center", valign="center", font=Font);
|
||
|
||
// Top half
|
||
difference() {
|
||
color("blue")
|
||
translate([0, 0, Tuner_Body_Thickness])
|
||
linear_extrude(Post_Hole_Depth-0.001)
|
||
retainer_outline();
|
||
tuner_arrange() tuner();
|
||
// tuner screw holes
|
||
tuner_arrange()
|
||
linear_extrude(Tuner_Body_Thickness+Post_Hole_Depth-1)
|
||
tuner_tab_hole(shrink=0.5);
|
||
// layer bolt holes
|
||
layer_bolt_holes_outer();
|
||
layer_bolt_holes_outer(dia=7.05, z0=Tuner_Body_Thickness+Post_Hole_Depth-4); // 5.4 OD for bolt head, 7 for M3 washer
|
||
layer_bolt_holes_inner();
|
||
layer_bolt_holes_inner(dia=7.05, z0=Tuner_Body_Thickness+Post_Hole_Depth-4);
|
||
// engraving
|
||
translate([0,-20,Tuner_Body_Thickness+Post_Hole_Depth-1])
|
||
linear_extrude(5) text(text = Engrave_String, size = 12, halign="center", valign="center", font=Font);
|
||
}
|
||
// Bottom half
|
||
color("grey")
|
||
difference() {
|
||
linear_extrude(Tuner_Body_Thickness) difference() {
|
||
retainer_outline();
|
||
// tuner body holes
|
||
translate([0, 0, -20])
|
||
tuner_arrange()
|
||
tuner_outline(-1.5);
|
||
}
|
||
// layer bolt holes
|
||
layer_bolt_holes_outer();
|
||
layer_bolt_holes_outer(dia=5.1, z1=5+1.5); // Heat insert is 5mm tall, we will use 20mm bolt for these holes
|
||
layer_bolt_holes_inner();
|
||
// tuning handle finger bit
|
||
handle_cutouts();
|
||
// engraving
|
||
bottom_engraving();
|
||
}
|
||
// Mounting
|
||
color("aqua")
|
||
difference() {
|
||
translate([0,0,-12]) linear_extrude(12) difference() {
|
||
retainer_outline();
|
||
tuner_arrange() tuner_outline(-1.5);
|
||
}
|
||
// reinforcing layer bolt holes
|
||
layer_bolt_holes_inner();
|
||
layer_bolt_holes_inner(dia=7.05, z1=(Tuner_Body_Thickness+Post_Hole_Depth-4)-29+5); // Heat insert is 5mm tall, we will use 30mm bolt for these holes
|
||
// mounting holes
|
||
for (x = [-30, -10, 10, 30])
|
||
translate([x,0,-5])
|
||
rotate([90,0,0]) {
|
||
cylinder(h=100, r=2.5, $fn=32);
|
||
// translate([0,0,10]) cylinder(h=20, r=3.8, $fn=32); // Bolt head
|
||
// translate([0,0,11]) cylinder(h=20, r=4.7, $fn=32); // Washer
|
||
translate([0,0,11]) cylinder(h=20, r=2.55, $fn=32); // Heat Insert
|
||
}
|
||
// mounting hollow
|
||
cyl_offset = [0,-36,-13];
|
||
translate(cyl_offset) rotate([0,90,0]) cyl(d=28, $fn=128);
|
||
translate([-100,-100+cyl_offset[1],-50]) cube([200,100,100]);
|
||
for (i = [-1,1]) hull() {
|
||
translate([0,-18,-15]) rotate([0,90,0]) c(d=32, z=50*i, $fn=128);
|
||
translate(cyl_offset) rotate([0,90,0]) c(d=28, z=14*i, $fn=128);
|
||
translate(cyl_offset) rotate([0,90,0]) c(d=28, z=50*i, $fn=128);
|
||
}
|
||
bottom_engraving();
|
||
}
|
||
}
|
||
part();
|
||
|
||
// tuner_arrange() tuner();
|
||
// handle_cutouts();
|