X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=ksafe-base.scad;h=4441b2a5713508b2123d40eef0d139405c93061d;hp=b1c62ed076d6c0a27328234764857f86cd3f27f4;hb=391e60ac3303391d9e929ee5f84b1db3ce2e40ee;hpb=80a9b9a4a16c60541ff0698ca9527aec0e966951 diff --git a/ksafe-base.scad b/ksafe-base.scad index b1c62ed..4441b2a 100644 --- a/ksafe-base.scad +++ b/ksafe-base.scad @@ -1,13 +1,13 @@ // -*- C -*- -// xxx from actual ksafe, needs slop adding -bolt_above = 14.30; -bolthole_height = 4.24; +// from actual ksafe +bolt_above = 8.50 - 0.50; +bolthole_height = 4.24 + 1.00; wall_thick = 4.50; -bolthole_width = 16.62; -main_sz = 150.56; +bolthole_width = 16.62 + 2.00; +main_sz = 150.56 + 0.75; cnr_rad = 13.5; // approx -lidinner_thick_allow = 20.78; +lidinner_thick_allow = 20.78 + 0.50; // other parameters web_thick = 4; @@ -21,6 +21,8 @@ space = 25; anchor_thick = 4; anchor_rad = 4; bevel = 8; +string_slot = 3.0; +string_depth = 6.0; // ----- calculated ----- @@ -175,19 +177,36 @@ module SWalls(ymin, ymax, t_bevel) { } } -module KsafeBase(){ - /// corners - for (xm=[0,1]) for (ym=[0,1]) { - mirror([xm,0,0]) mirror([0,ym,0]) +module AtTwoCorners(){ + for (xm=[0,1]) { + mirror([xm,0,0]) translate((hsz - cnr_rad) * [1,1]) intersection(){ rotate_extrude(convexity=10) translate([-cnr_rad,0]) - UsualProfile(); + children(); translate([0,0,-250]) cube([50,50,500]); } } +} + +module Box(){ + /// corners, and front and back of base + for (ym=[0,1]) mirror([0,ym,0]) { + AtTwoCorners(){ + UsualProfile(); + } + hull() AtTwoCorners(){ + upp_app_Vars(bevel){ + polygon([ $xppI, + $xppF, + $xppF + [0.1, 0], + $xppI + [0.1, 0] + ]); + } + } + } // side walls and base SWalls(yw6 , yw4 , bevel ) { UsualProfile(); BaseProfile(); } @@ -196,7 +215,31 @@ module KsafeBase(){ 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(); } + SWalls(yw1, yw10, a_bevel) { WebProfile(); SomeBaseProfile($gppS, $xppF); } + + // front and rear walls + rotate([0,0,90]) SWalls(yw6, yw13, bevel) UsualProfile(); +} + +module KsafeBase(){ + cut = main_sz + 20; + + difference(){ + Box(); + + // bolt holes + translate([0,0, -bolt_above -0.5 * bolthole_height]) + cube(center=true, [ cut, bolthole_width, bolthole_height ]); + + // string slot + translate([ -cut, + -(bolthole_width/2 + bolthole_rhs), + 1 ]) + mirror([0,1,0]) mirror([0,0,1]) + cube([ cut*2, + string_slot, + lidinner_thick_allow + string_depth + 1 ]); + } } module DemoProfiles(){ @@ -208,4 +251,5 @@ module DemoProfiles(){ } //DemoProfiles(); +//Box(); KsafeBase();