X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=wardrobe-hook.scad;h=ecb1b12b66cb572fdee4cb0e126a41b1e9384251;hb=f57afd91759a049296c6d454b2e3a2b46a5560f7;hp=e37e1dacb87125407e94454ca907446900adbb7d;hpb=98829f3f7c334d0bd11c1f7db6df149a1de67f15;p=reprap-play.git diff --git a/wardrobe-hook.scad b/wardrobe-hook.scad index e37e1da..ecb1b12 100644 --- a/wardrobe-hook.scad +++ b/wardrobe-hook.scad @@ -1,5 +1,7 @@ // -*- C -*- +include + module FArcSegment_mask(beta) { for (i=[0 : 0.75 : 3]) { rotate(i*beta/4) @@ -30,10 +32,24 @@ mainthick = 4; clipthick = 2; clipang = 120; -bend = 5; +stemlen = 50; + +topwidth = 30; + +hookinrad = 7.5; +hookcurl = 60; +hookwidth = 4; tuberad = tubewidth/2; +bend = atan(tuberad/stemlen); mainoutrad = tuberad + mainthick; +hookoutrad = hookinrad + hookwidth; +hookcy = -(stemlen - hookoutrad); + +eltop = [topwidth/2, -tuberad + tubeheight + mainthick + 1]; +elmid = [topwidth/2, -tuberad]; +ellow = tangent_intersect_b([0,hookcy], hookinrad, elmid); +ellowextra = 180 - tangent_intersect_beta([0,hookcy], hookinrad, elmid); module Plan(){ dy = tubeheight - tuberad*2; @@ -41,8 +57,23 @@ module Plan(){ FArcSegment(0, 0, tuberad, mainoutrad, -bend, bend+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)]); } -Plan(); +module ElevationCore(){ + FArcSegment(0, hookcy, hookinrad, hookoutrad, + 180 - ellowextra, + 90 + hookcurl); + translate([-hookoutrad*sqrt(0.5), -(stemlen+10)]) mirror([1,0]) + square(center=false, size=[topwidth, stemlen + tubeheight + 20]); + polygon([[-hookoutrad, ellow[1]], + reflect_in_y(eltop), + eltop, + elmid, + ellow]); +} -//FArcSegment(0, 20, 20,30, 20,160); +Plan(); +translate([50,0]) + ElevationCore();