X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=pull-cord-keeper.scad;h=b23ac47c30a2f2faa6578ea9b755467154662221;hp=f4d21c0c9ea9a34842b0129dd87d58080ec4d082;hb=0f072ba2644f3e9529777184d00dfc7097592a44;hpb=3d6d1b31985e9284d8f00a53c1015a022636e024 diff --git a/pull-cord-keeper.scad b/pull-cord-keeper.scad index f4d21c0..b23ac47 100644 --- a/pull-cord-keeper.scad +++ b/pull-cord-keeper.scad @@ -11,6 +11,8 @@ blockwidth = hcentredist*2 + 6; height = 20; +roundedgedia = 7.5; + ziglen = hcentredist/2; feedxgap = 5; @@ -20,8 +22,12 @@ ribsgap = 1; ribdepth = 3; ribheight = 4; +backxgap = 1; + blockoverlapcnr = 5; +screwholedia = 4 + 0.5; + module Oval(centredist, rad) { hull() { translate([-centredist/2,0,0]) circle(r=rad); @@ -29,10 +35,20 @@ module Oval(centredist, rad) { } } +module VExtrude(){ + translate([0,0, -height/2]) + linear_extrude(height=20) + children(0); +} + +module OuterOval(){ + Oval(hcentredist, houterrad); +} + module Hoop(){ difference(){ hull(){ - Oval(hcentredist, houterrad); + OuterOval(); translate([0, (blockdepth + hoopthick)/2 + hinnerrad]) square([blockwidth, blockdepth + hoopthick], @@ -42,10 +58,34 @@ module Hoop(){ } } +module RoundEdges(){ + intersection(){ + VExtrude() + OuterOval(); + + for (xi=[-1,1]) { + for (yi=[-1,1]) { + translate([xi * (hcentredist/2 + hinnerrad), + houterrad, + yi * (height/2 - roundedgedia / 4 * sqrt(2))]) + rotate([90,0,0]) + cylinder(r=roundedgedia/2, h=houterrad*2, $fn=20); + } + } + } +} + module Positive(){ - translate([0,0, -height/2]) - linear_extrude(height=20) - Hoop(); + difference(){ + VExtrude() + Hoop(); + + rotate([90,0,0]) + translate([0,0,-50]) + cylinder(r=screwholedia/2, h=100); + } + + RoundEdges(); } module Ribs(){ @@ -71,10 +111,19 @@ module Division(cutmore) { cube([100, 100, 50]); } } - translate([blockwidth/2 - blockoverlapcnr, -50, -50]) + translate([blockwidth/2 - blockoverlapcnr + -cutmore*backxgap/2, + -1, + -50]) cube([100, 100, 100]); - translate([50, houterrad + blockdepth/2 + -cutmore*ribsgap, 0]) + translate([ziglen + -cutmore*feedxgap/2, + -50, + -50]) + cube([100, 51, 100]); + + translate([50, + hinnerrad/2 + houterrad/2 + blockdepth/2 + -cutmore*ribsgap/2, + 0]) rotate([-90,0,90]) linear_extrude(height=100) Ribs(); @@ -104,14 +153,16 @@ module B(){ module Demo(){ color("red") A(); -// color("blue") B(); + color("blue") B(); } //Ribs(); //Demo(); -A(); +//A(); //B(); //%Division(+1); -//Demo(); +//Hoop(); + +Demo();