X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=pull-cord-keeper.scad;h=c3efb7fad419a7712b782c697cb4c51a7f6b7ff4;hb=2c283d200cf00a40bb9b0ab65f7d70173e86c86a;hp=115ca91d010402029e1a20a1a7d6f8c8282d4bbf;hpb=7fc9f05c6d28fd6b866de39a01bdb58a9dc827d0;p=reprap-play.git diff --git a/pull-cord-keeper.scad b/pull-cord-keeper.scad index 115ca91..c3efb7f 100644 --- a/pull-cord-keeper.scad +++ b/pull-cord-keeper.scad @@ -11,6 +11,17 @@ blockwidth = hcentredist*2 + 6; height = 20; +ziglen = hcentredist/2; + +feedxgap = 5; +feedzgap = 5; +ribsgap = 1; + +ribdepth = 3; +ribheight = 4; + +blockoverlapcnr = 5; + module Oval(centredist, rad) { hull() { translate([-centredist/2,0,0]) circle(r=rad); @@ -32,8 +43,78 @@ module Hoop(){ } module Positive(){ - linear_extrude(height=20) + translate([0,0, -height/2]) + linear_extrude(height=20) Hoop(); } -Positive(); +module Ribs(){ + imax = ceil(height*2 / ribheight); + for (i=[-imax:imax]) { + hull(){ + translate([-ribdepth/2, + ribheight*i, + 0]) + polygon([[0, 0], + [ribdepth, -ribheight], + [ribdepth, +ribheight]]); + translate([50, 0]) + square([1, height*2], center=true); + } + } +} + +module Division(biggerpi) { + xgap = feedxgap * biggerpi; + zgap = feedzgap * biggerpi; + + mirror([0,0,1]) { + translate([0, 0, zgap/2 * (1 - 2*biggerpi)]) { + translate([-ziglen + xgap/2, -100, 0]) + cube([100, 100, 50]); + } + } + translate([blockwidth/2 - blockoverlapcnr, -0.1, 0]) + cube([100, 100, 100]); + + translate([50, houterrad + blockdepth/2 + ribsgap * biggerpi, 0]) + rotate([-90,0,90]) + linear_extrude(height=100) + Ribs(); +} + +module SDemo(){ + //difference(){ + % Positive(); + // Division(0); + //} + Division(0); +} + +module A(){ + difference(){ + Positive(); + Division(0); + } +} + +module B(){ + intersection(){ + Positive(); + Division(1); + } +} + +module Demo(){ + color("red") A(); +// color("blue") B(); +} + +//Ribs(); +//Demo(); + +//A(); +B(); +%Division(0); + +//Demo();