From: Ian Jackson Date: Sun, 16 Sep 2012 15:27:31 +0000 (+0100) Subject: splitpin wip X-Git-Tag: filamentspool-v2-release~811 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=38148b180154faadec3c3ce111836ecf1d88c31b;p=reprap-play.git splitpin wip --- diff --git a/splitpin.scad b/splitpin.scad index 553d14c..7120037 100644 --- a/splitpin.scad +++ b/splitpin.scad @@ -4,22 +4,45 @@ include tau = 6.28318530718; function deg2rad(deg) = deg/360 * tau; +function rad2deg(rad) = rad/tau * 360; + +module SplitPin(w=1.5, holeminrad=4, thick=3, deviationrad=1.5, + mainlen=20, handlerad=10, handlelen=7){ + spare = holeminrad - deviationrad - w; + echo("splitpin spare",spare); + %translate([0,mainlen+handlelen,0]) cylinder(r=spare, h=thick); + %translate([0,mainlen,thick/2]) rotate([90,0,0]) + cylinder(r=holeminrad, h=thick); -module SplitPin(w=1.5, holeminrad=3, deviationrad=1, thick=3, - mainlen=20){ bent_x0 = w*1.5; bent_x1 = holeminrad; bent_dx = bent_x1 - bent_x0; bent_y1 = mainlen; + bent_dy = bent_y1; bent_rad = (bent_dy / bent_dx) * bent_dy; bent_subang = atan(bent_dx / bent_dy); actual_mainlen = bent_rad * deg2rad(bent_subang); + unbent_dx = bent_dx + deviationrad; - + unbent_subang = atan(unbent_dx / actual_mainlen); + unbent_rad = actual_mainlen / deg2rad(unbent_subang); + + main_cx = w*1.5 + unbent_rad; + for (xmir=[0,1]) mirror([xmir,0,0]) { linear_extrude(height=thick) { FlatArc(0,0, w*0.5, w*1.5, 270-1,360); - FlatArc(); + FlatArc($fa=1, main_cx,0, unbent_rad, unbent_rad+w, + 180-unbent_subang, 180); + translate([unbent_rad * (1 - cos(unbent_subang)) + w*1.5, + unbent_rad * sin(unbent_subang)]) + rotate([0,0,-unbent_subang]) { + translate([-(w + deviationrad), -0.1]) + square(size=[w + deviationrad, w+0.1]); + FlatArc(-deviationrad + handlerad, w, + handlerad, handlerad+w, + 180-rad2deg(handlelen/handlerad), 180); + } } } }