X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=wardrobe-hook.scad;h=e43822e13b77ffe10556e621b1dafc857fec7446;hb=06f9b413dd355fd5652491ff212d93687a788f9a;hp=7f29082cb2e736dc6cb840a203c8012faf0e28c0;hpb=182e6e85530054d8f3919ec1f0da164753884a33;p=reprap-play.git diff --git a/wardrobe-hook.scad b/wardrobe-hook.scad index 7f29082..e43822e 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) @@ -42,12 +44,12 @@ tuberad = tubewidth/2; bend = atan(tuberad/stemlen); mainoutrad = tuberad + mainthick; hookoutrad = hookinrad + hookwidth; -hookcy = stemlen - hookoutrad; +hookcy = -(stemlen - hookoutrad); -eltopx = topwidth/2; -eltopy = -tuberad + tubeheight + mainthick + 1; -elmidx = topwidth/2; -elmidy = -tuberad; +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; @@ -59,12 +61,24 @@ module Plan(){ square(center=false, size=[mainthick, stemlen/cos(bend)]); } -module Elevation(){ - FArcSegment(0, -hookcy, hookinrad, hookoutrad, 180, 90+hookcurl); +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]); } -Plan(); -translate([50,0]) - Elevation(); +intersection(){ + translate([0,1, -(topwidth+10)/2]) + linear_extrude(height=topwidth+10) Plan(); + translate([50,0]) + rotate([0,-90,0]) + linear_extrude(height=100) + ElevationCore(); +}