X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=salter-scale-hook.scad;h=3a8cfa354c0ca1642c4415a734a2b2da4251efec;hb=ba7c5b240dcdab5fa3f4e3f7823bb828551471f0;hp=849c31435b5db26af7756279df7d07e5196f9ecd;hpb=a2c6c157b103d0c0abb417b9b60cf50a4f5d67e4;p=reprap-play.git diff --git a/salter-scale-hook.scad b/salter-scale-hook.scad index 849c314..3a8cfa3 100644 --- a/salter-scale-hook.scad +++ b/salter-scale-hook.scad @@ -1,22 +1,108 @@ // -*- C -*- +include + rod_dia = 8+2; thick = 8; screw_dia = 3.5 + 0.75; screw_head_dia = 8.2 + 1.0; rod_offset = 14 + 2; +mainheight = 25; width = 40; +rearthick = 4; +screw_head_depth = 2; + +// calculated + +d = rod_dia/2 + thick/2; +yminc = -d; +ymin = yminc-thick/2; +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 = rod_dia/2, $fn=20); + circle(r = thick/2, $fn=30); } module Profile() { - d = rod_dia/2 + thick/2; + e = rod_offset; hull(){ translate([-d, 0]) C(); translate([-d,-d]) C(); } + difference(){ + rectfromto([-d,ymin], [e,0]); + circle(r= rod_dia/2, $fn=50); + } + hull(){ + for (y= [-d, +mainheight]) { + translate([d, y]) C(); + rectfromto([d, y-thick/2], [e, y+thick/2]); + } + } +} + +module CutProfile(){ + hull(){ + for (x = [rod_dia/2 + thick/2, 30]) { + for (y= [yminc,ymaxc] ) { + translate([x,y]) circle(r = (thick-rearthick)/2, $fn=20); + } + } + } +} + +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(); + } + } } -Profile(); +//ProfileDemo(); +Hook();