X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=wardrobe-hook.scad;h=d7c070c788278965b9fabc961610d2338ef7aa9e;hp=69f95b557fa29de32bcd5eb32985cb78ad7e88fc;hb=abe05b69845ac02b78b25602905fecd8a207d47f;hpb=b769fa1064134977fdcc970bc6355866fee6fec9 diff --git a/wardrobe-hook.scad b/wardrobe-hook.scad index 69f95b5..d7c070c 100644 --- a/wardrobe-hook.scad +++ b/wardrobe-hook.scad @@ -139,29 +139,55 @@ module SElevation(){ [-1, boty]]); } +module SElevationPlaced(){ + rotate([0,-90,0]) translate([0,0,-100]) linear_extrude(height=200) + SElevation(); +} + module SHookL(){ ///toplevel intersection(){ linear_extrude(height=topwidth) SPlan(); - rotate([0,-90,0]) translate([0,0,-100]) linear_extrude(height=200) - SElevation(); + SElevationPlaced(); } } // straight-on version, reversed, everything prefixed with t or T +tjoinrad = mainoutrad * 0.7; +tstem0leny = tuberad - tjoinrad*0.5; +tjoinoutrad = tjoinrad + mainthick; + thookcy = shookcy; -tstem0leny = tuberad; -tbend_raw = tangents_intersect_beta([0,shookcy], hookinrad, - [0,-tstem0leny], -tuberad); -echo(tbend_raw); -tbend = angle_map_range(90-tbend_raw, -180); + +tjoin0c = [tuberad - tjoinrad, -tstem0leny]; +tjoin1c = [0, thookcy]; + +tbend_raw = tangents_intersect_beta(tjoin0c, tjoinrad, + tjoin1c, -hookoutrad); +tbend0 = angle_map_range(tbend_raw, 0); +tbend1 = angle_map_range(tbend_raw + 180, -180); + +tbend0p = circle_point(tjoin0c, tjoinrad, tbend_raw); +tbend1p = circle_point(tjoin1c, -hookoutrad, tbend_raw); module TPlan(){ ClipPlan(0, tstem0leny); - FArcSegment(0,-tstem0leny, tuberad,mainoutrad, - tbend, 10); + FArcSegment(tjoin0c[0],tjoin0c[1], tjoinrad,tjoinoutrad, + tbend0, 360-tbend0); FArcSegment(0,shookcy, hookinrad,hookoutrad, - tbend_raw, 270-tbend_raw + hookcurl); + tbend1, 270+hookcurl - tbend1); + translate(tbend0p) { + rotate(tbend_raw+180) mirror([1,0]) { + translate([0,-0.1]) square(size=[mainthick, dist2d(tbend0p,tbend1p)+0.2]); + } + } +} + +module THookR(){ ///toplevel + intersection(){ + linear_extrude(height=topwidth) TPlan(); + SElevationPlaced(); + } } // other toplevels etc. @@ -174,9 +200,15 @@ module SHookR(){ ////toplevel mirror([1,0,0]) SHookL(); } +module THookL(){ ////toplevel + mirror([1,0,0]) THookR(); +} + module Demo(){ ////toplevel translate([-30,tubeheight,0]) HookL(); translate([ 0,tubeheight,0]) HookR(); translate([ 30, 0,0]) SHookL(); translate([ 60, 0,0]) SHookR(); + translate([ 90, 0,0]) THookL(); + translate([120, 0,0]) THookR(); }