X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=ksafe-base.scad;h=248119ca0199a0b012f435fb766df96d9666dfd4;hb=2e356fc5be2b3e7c6d474338d602c17196c4b7c8;hp=cc03267e1e5db7adef35fc12682619b3f58eb661;hpb=4daa86db5c490ab1316027ccf8dcd1fa88e07992;p=reprap-play.git diff --git a/ksafe-base.scad b/ksafe-base.scad index cc03267..248119c 100644 --- a/ksafe-base.scad +++ b/ksafe-base.scad @@ -1,16 +1,26 @@ // -*- C -*- -// xxx +// xxx from actual ksafe bolt_above = 4; wall_thick = 4; bolthole_height = 4; bolthole_width = 10; -base_thick = 4; +main_sz = 300; +cnr_rad = 10; lidinner_thick_allow = 20; + +// other parameters +web_thick = 4; +web_height = 20; // excluding wall and base thick +bolthole_rhs = 20; +bolthole_lhs = 20; +boltreinf_thick = 6; +anchor_wall_space = 45; +base_thick = 4; space = 25; anchor_thick = 4; anchor_rad = 4; -bevel = 15; +bevel = 5; // ----- calculated ----- @@ -33,6 +43,13 @@ module upp_app_Vars(t_bevel){ $xppJ = $xppE + wall_thick * [ 1, tan(22.5) ]; $xppI = $xppF + base_thick * [ tan(22.5), 1 ]; + // must pass a_bevel for t_bevel for these to be valid + $gppP = gppA + [0,-1] * lidinner_thick_allow; + $gppQ = $gppP + [1,-1] * web_height; + $gppR = $xppJ + [ 1, tan(22.5) ] * web_height; + $gppS = $xppI + [ tan(22.5), 1 ] * web_height; + $gppT = [ $gppQ[0], $xppE[1] ]; + children(); } @@ -43,7 +60,8 @@ module upp_app_Profile(){ $xppF, $xppF + [1,0], $xppI + [1,0], - $xppJ ]); + $xppJ ], + convexity=10); } @@ -65,7 +83,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); @@ -73,10 +92,57 @@ module AnchorProfile(){ } } -module Demo(){ +module AnchorWallProfile(){ + UsualProfile(); + NearAnchorProfile(); + hull(){ + for (bev = [bevel, a_bevel]) { + upp_app_Vars(bev) { + polygon([ $xppE, + $xppF, + $xppI, + $xppJ ], + convexity=10); + } + } + } +} + +module WebProfile(){ + upp_app_Vars(a_bevel){ + if ($gppR[1] <= $gppP[1]) { + polygon([ $gppP, + $xppE, + $gppT, + $gppQ ]); + polygon([ $gppP, + $xppE, + $xppF, + $gppS, + $gppR ], + convexity=10); + } else { + polygon([ $gppP, + $xppE, + $xppF, + $gppS, + $gppP + web_height * [1,0] ], + convexity=10); + } + polygon([ $gppS, + $xppF, + $xppF + [1,0], + $gppS + [1,0] ], + convexity=10); + } +} + +module DemoProfiles(){ + translate([0,0,-2]) color("yellow") AnchorWallProfile(); color("red") AnchorProfile(); translate([0,0,2]) color("black") NearAnchorProfile(); - color("blue") UsualProfile(); + translate([0,0,4]) color("blue") UsualProfile(); + translate([0,0,-4]) color("pink") WebProfile(); } -Demo(); +DemoProfiles();