X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=wardrobe-hook.scad;h=331121cffc1772c73cefc8d38e703252bbb990eb;hb=94c38417c195ad9c990c5b9d3bae428421ac5e1c;hp=1f13834396102d26c66e726c128b648abbcc9814;hpb=8e8e53ea2178b293dee065684680b6cf4a7ec45f;p=reprap-play.git diff --git a/wardrobe-hook.scad b/wardrobe-hook.scad index 1f13834..331121c 100644 --- a/wardrobe-hook.scad +++ b/wardrobe-hook.scad @@ -15,8 +15,8 @@ module FArcSegment(xc,yc,inrad,outrad,alpha,delta) { translate([xc,yc]) { intersection() { difference() { - circle(r=outrad); - circle(r=inrad); + circle(r=outrad, $fn=70); + circle(r=inrad, $fn=70); } rotate(alpha) scale(outrad*2) { FArcSegment_mask(delta); @@ -25,16 +25,17 @@ module FArcSegment(xc,yc,inrad,outrad,alpha,delta) { } } -tubeheight = 30; -tubewidth = 15; +tubeslop = 0.5; +tubeheight = 30 + tubeslop; +tubewidth = 15 + tubeslop; mainthick = 4; clipthick = 2; -clipang = 120; +clipang = 135; -stemlen = 50; +stemlen = 40; -topwidth = 30; +topwidth = 20; hookinrad = 7.5; hookcurl = 60; @@ -51,20 +52,24 @@ elmid = [topwidth/2, -tuberad]; ellow = tangent_intersect_b([0,hookcy], hookinrad, elmid); ellowextra = 180 - tangent_intersect_beta([0,hookcy], hookinrad, elmid); -module Plan(){ +module ClipPlan(qbend, qstemleny){ dy = tubeheight - tuberad*2; FArcSegment(0, dy, tuberad, mainoutrad, -1, 181); - FArcSegment(0, 0, tuberad, mainoutrad, -bend, bend+1); + FArcSegment(0, 0, tuberad, mainoutrad, -qbend, qbend+1); translate([tuberad, 0]) square(center=false, size=[mainthick,dy]); FArcSegment(0, 0, tuberad, tuberad + clipthick, 360-clipang, clipang+1); - rotate(-bend) translate([tuberad, 0]) mirror([0,1]) - square(center=false, size=[mainthick, stemlen/cos(bend)]); + rotate(-qbend) translate([tuberad, 0]) mirror([0,1]) + square(center=false, size=[mainthick, qstemleny/cos(qbend)]); +} + +module Plan(){ + ClipPlan(bend,stemlen); } module ElevationCore(){ FArcSegment(0, hookcy, hookinrad, hookoutrad, 180 - ellowextra, - 90 + hookcurl); + 90 + hookcurl + ellowextra); translate([-hookoutrad*sqrt(0.5), hookcy - hookoutrad*sqrt(0.5) + 0.1]) mirror([1,0]) @@ -109,5 +114,22 @@ module Hook(){ ////toplevel } } +// frontbackly version, everything prefixed with f or F + +fstemleny = -hookcy; +fbend = atan((tuberad - hookinrad) / fstemleny); + +module FPlan(){ + ClipPlan(fbend, fstemleny); +} + +// toplevels etc. + +module RightHook(){ ////toplevel + mirror([1,0,0]) Hook(); +} + +FPlan(); +translate([60,0,0]) Plan(); //ElevationCore(); -Hook(); +//RightHook();