X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=ksafe-base.scad;h=b1c62ed076d6c0a27328234764857f86cd3f27f4;hp=54042b8e61ed5a9ba0478f2a9e71b1b12b54ea88;hb=80a9b9a4a16c60541ff0698ca9527aec0e966951;hpb=363130e2df0af7a65b16524a13089092d86cfe21 diff --git a/ksafe-base.scad b/ksafe-base.scad index 54042b8..b1c62ed 100644 --- a/ksafe-base.scad +++ b/ksafe-base.scad @@ -1,13 +1,13 @@ // -*- C -*- -// xxx from actual ksafe -bolt_above = 4; -wall_thick = 4; -bolthole_height = 4; -bolthole_width = 10; -main_sz = 300; -cnr_rad = 10; -lidinner_thick_allow = 20; +// xxx from actual ksafe, needs slop adding +bolt_above = 14.30; +bolthole_height = 4.24; +wall_thick = 4.50; +bolthole_width = 16.62; +main_sz = 150.56; +cnr_rad = 13.5; // approx +lidinner_thick_allow = 20.78; // other parameters web_thick = 4; @@ -15,20 +15,34 @@ web_height = 20; // excluding wall and base thick bolthole_rhs = 20; bolthole_lhs = 20; boltreinf_thick = 6; -anchor_wall_space = 45; +anchor_wall_space = 25; base_thick = 4; space = 25; anchor_thick = 4; anchor_rad = 4; -bevel = 15; +bevel = 8; // ----- calculated ----- +hsz = main_sz/2; + gppA = [0,0]; gppB = gppA - [ wall_thick, 0 ]; gppL = [ gppB[0], -(lidinner_thick_allow + space + base_thick) ]; +yw1 = -web_thick/2; +yw2 = yw1 - bolthole_rhs; +yw3 = yw2 - anchor_thick; +yw4 = yw3 - anchor_wall_space; +yw5 = yw4 - wall_thick; +yw6 = -(hsz - cnr_rad + 0.1); + +yw10 = web_thick/2; +yw11 = yw2 + anchor_wall_space; +yw12 = yw11 + wall_thick; +yw13 = -yw6; + // anchor anchor_b = anchor_thick + anchor_rad; @@ -60,7 +74,8 @@ module upp_app_Profile(){ $xppF, $xppF + [1,0], $xppI + [1,0], - $xppJ ]); + $xppJ ], + convexity=10); } @@ -82,7 +97,8 @@ module AnchorProfile(){ polygon([ $xppE, $xppF, $xppF + [0,1], - $xppE + [1,0] ]); + $xppE + [1,0] ], + convexity=10); translate(appM) circle(r= anchor_b); } translate(appM) circle(r= anchor_rad); @@ -99,7 +115,8 @@ module AnchorWallProfile(){ polygon([ $xppE, $xppF, $xppI, - $xppJ ]); + $xppJ ], + convexity=10); } } } @@ -116,21 +133,72 @@ module WebProfile(){ $xppE, $xppF, $gppS, - $gppR ]); + $gppR ], + convexity=10); } else { polygon([ $gppP, $xppE, $xppF, $gppS, - $gppP + web_height * [1,0] ]); + $gppP + web_height * [1,0] ], + convexity=10); } polygon([ $gppS, $xppF, $xppF + [1,0], - $gppS + [1,0] ]); + $gppS + [1,0] ], + convexity=10); } } +module SomeBaseProfile(I, F){ + polygon([ I, + F, + [ hsz+1, F[1] ], + [ hsz+1, I[1] ] ]); +} + +module BaseProfile(){ + SomeBaseProfile($xppI, $xppF); +} + +module SWalls(ymin, ymax, t_bevel) { + upp_app_Vars(t_bevel) { + translate([0,ymin,0]) + mirror([0,1,0]) + rotate([90,0,0]) + linear_extrude(height= ymax-ymin, convexity=10) + for (xm=[0,1]) + mirror([xm,0]) + translate([-hsz, 0]) + children(); + } +} + +module KsafeBase(){ + /// corners + for (xm=[0,1]) for (ym=[0,1]) { + mirror([xm,0,0]) mirror([0,ym,0]) + translate((hsz - cnr_rad) * [1,1]) + intersection(){ + rotate_extrude(convexity=10) + translate([-cnr_rad,0]) + UsualProfile(); + translate([0,0,-250]) + cube([50,50,500]); + } + } + + // side walls and base + SWalls(yw6 , yw4 , bevel ) { UsualProfile(); BaseProfile(); } + SWalls(yw5 , yw4 , a_bevel) { AnchorWallProfile(); BaseProfile(); } + SWalls(yw5 , yw12, a_bevel) { NearAnchorProfile(); BaseProfile(); } + SWalls(yw3 , yw2 , a_bevel) { AnchorProfile(); BaseProfile(); } + SWalls(yw11, yw12, a_bevel) { AnchorWallProfile(); BaseProfile(); } + SWalls(yw11, yw13, bevel ) { UsualProfile(); BaseProfile(); } + SWalls(yw1, yw10, a_bevel) { WebProfile(); } +} + module DemoProfiles(){ translate([0,0,-2]) color("yellow") AnchorWallProfile(); color("red") AnchorProfile(); @@ -139,4 +207,5 @@ module DemoProfiles(){ translate([0,0,-4]) color("pink") WebProfile(); } -DemoProfiles(); +//DemoProfiles(); +KsafeBase();