X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=poster-tube-lid.scad;h=77ecb17cc6cc82577024df0fa0d53d2f8ca11968;hb=534e13bb00d654ecba6c964936b6a6c7da8d0307;hp=c652d7d1235da72484122a0df10222cb664f2810;hpb=05736c1a9f02fe7537e7953d2db5b92ad3bc0fbf;p=reprap-play.git diff --git a/poster-tube-lid.scad b/poster-tube-lid.scad index c652d7d..77ecb17 100644 --- a/poster-tube-lid.scad +++ b/poster-tube-lid.scad @@ -1,5 +1,7 @@ // -*- C -*- +include + coarse = false; main_dia = 71.2 + 0.50 - 2.26; @@ -203,7 +205,7 @@ echo(bayo_polygon); //cppy6 = -catch_strap_width * 2/3; -cppxC = 0.34 * sm_inner_rad * TAU; +cppxC = 0.41 * sm_inner_rad * TAU; // catch pin @@ -233,7 +235,7 @@ cppD = cppC + [0,-1] * catch_strap_width; // catch assembly stalk and so on -cppF = [ cppg[0] - catch_stem_stalk_eff_bend_rad, cppd[1] ]; +cppF = [ cppg[0] - catch_stalk_eff_bend_rad, cppd[1] ]; cpp4 = [ cppg[0] - catch_stem_len, cpph[1] ] + [1,-1] * catch_cr; cpp5 = [ cpp4[0], cppC[1] + catch_cr ]; cpp2 = cpp5 + [-1,0] * (catch_cr * 2 + catch_stalk_base_width); @@ -243,6 +245,8 @@ cpp3 = [ cpp2[0] + catch_cr * 2, cppd[1] - catch_cr ]; cppA = [ -cppxC, cpp9[1] ]; cppE = [ cppA[0], cppD[1] ]; +catch_assembly_dy = -cppy9 + catch_strap_width; + module MainProfile(){ main_cnr_pos = [ side_thick, top_z ] - [1,1]*main_cnr; @@ -587,59 +591,40 @@ module CatchAssemblyCoreProfile(){ cpp11, ]); } + translate(cpp2) circle(r= catch_cr); } } -module CatchCoreProfile(){ ////toplevel - hull(){ - translate(cppB) circle(r= catch_knob_dia/2); - polygon([cpp4, - cppB, - cpp3]); - } - translate(cpp8) - circle(catch_cr); - polygon([ - cpp4, - cppB, - cpp3, - cpp2, - cpp1, - cpp12, - ]); - difference(){ - polygon([ cpp4, - cpp3, - cpp12, - cppA, - cppE, - cppD, - cppC, - cpp9, - cpp10, - cpp11, - cpp7, - cpp5, - ], convexity=10); - hull(){ - translate(cpp7) circle(r= catch_cr); - polygon([ cpp7, - cpp5, - cpp11 ]); - } - hull(){ - translate(cpp6) circle(catch_cr); - polygon([ cppA, - cpp0, - cpp1 ]); +module CatchHeadProfile(){ + intersection(){ + translate(cppF){ + difference(){ + circle(r = dist2d(cppF, cppd)); + circle(r = dist2d(cppF, cppa)); + } } + polygon([ cppa, + cppg, + cpph, + cppd, + cppc, + cppb ]); } + polygon([ cppd, + cppg, + cppf, + cppe, + cpph ]); } + module CatchCore(){ /////toplevel linear_extrude(height=catch_strap_thick, convexity=10) CatchAssemblyCoreProfile(); + linear_extrude(height=catch_strap_thick, convexity=10) + CatchHeadProfile(); + translate(concat(cppB,[0])) hull(){ translate([0,0, catch_knob_height - catch_knob_dia/2]) sphere(r = catch_knob_dia/2); @@ -654,8 +639,8 @@ module CatchPreDistort(){ /////toplevel } module CatchAssembly(){ /////toplevel - rotate([0,0, -0.5 * (cpp1[0] + cpp2[0]) / sm_inner_rad * 360/TAU]) - translate([0,0, catch_strap_width]) + rotate([0,0, -(cppe[0] + cppB[0]) / sm_inner_rad * 360/TAU]) + translate([0,0, catch_assembly_dy]) scale(sm_inner_rad / 100) import(str("poster-tube-lid,CatchPostDistort-fa", (coarse ? 20 : 3), @@ -703,11 +688,12 @@ module CatchPinProfileDemo(){ /////toplevel echo("G ", cpp2[0] - cpp1[0], bayo_n[0] - bayo_e[0]); - color("blue") translate([-cpp2[0], - -cpp2[1], + color("blue") translate([0,0, +1, - ]) - CatchCoreProfile(); + ]) { + CatchAssemblyCoreProfile(); + CatchHeadProfile(); + } polygon(bayo_polygon, convexity=10); }