rod_offset = 14 + 2;
mainheight = 25;
width = 40;
-rearthick = 3;
+rearthick = 4;
+screw_head_depth = 2;
// calculated
ymaxc = mainheight;
ymax = mainheight+thick/2;
+cutdepth = rod_offset - rod_dia/2 - rearthick;
+
+cut_z0 = screw_head_dia/2;
+cut_z1 = width/2 - rearthick;
+
+cutslopez = cutdepth * 0.5;
+
module C() {
circle(r = thick/2, $fn=30);
}
}
module CutProfile(){
-// rectfromto([
+ hull(){
+ for (x = [rod_dia/2 + thick/2, 30]) {
+ for (y= [yminc,ymaxc] ) {
+ translate([x,y]) circle(r = (thick-rearthick)/2, $fn=20);
+ }
+ }
+ }
}
-module Demo(){
+module ProfileDemo(){
Profile();
+ color("red") translate([0,0,1]) CutProfile();
+}
+
+module Cut(less){
+ translate([0,0, cut_z0 + less])
+ linear_extrude(height = cut_z1 - cut_z0 - less*2)
+ CutProfile();
+}
+
+module ScrewHole(){
+ xd = (screw_head_dia-screw_dia)/2;
+ translate([0,0,-50])
+ cylinder(h=100, r= screw_dia/2, $fn=20);
+ hull(){
+ translate([0,0,-xd])
+ cylinder(h=1, r= screw_dia/2, $fn=50);
+ cylinder(h=20, r= screw_head_dia/2, $fn=50);
+ }
+}
+
+module Hook(){
+ difference(){
+ translate([0,0, -width/2])
+ linear_extrude(height=width) Profile();
+
+ for (m=[0,1]) {
+ mirror([0,0,m]) {
+ hull(){
+ Cut(cutslopez);
+ translate([cutdepth,0,0]) Cut(0);
+ }
+ }
+ }
+
+ translate([rod_dia/2 + screw_head_depth,
+ ymaxc - screw_head_dia,
+ 0]) {
+ rotate([0,-90,0])
+ ScrewHole();
+ }
+ }
}
-Demo();
+//ProfileDemo();
+Hook();