chiark / gitweb /
ksafe-base: dcover wip
[reprap-play.git] / ksafe-base.scad
index 829c63a6e4b2316666310ab5583225e871b5de19..a291a52373ef5f4aeeca21d24d52a9986fa6d4d0 100644 (file)
@@ -8,6 +8,7 @@ bolthole_width = 16.62 + 2.00;
 main_sz = 150.56 + 0.75;
 cnr_rad = 13.5; // approx
 lidinner_thick_allow = 20.78 + 0.50;
+display_width = 69.81 - 0.50;
 
 dpp3 = [ -5.5, 8.5 ];
 dpp2 = [ -11.0, 7.0 ];
@@ -30,11 +31,15 @@ string_depth = 6.0;
 thumbslot_depth = 5.0;
 thumbslot_width = 15.0;
 thumbslot_between = 10;
+ksafecover_lip = 4.62;
+display_rhs_secs = 15;
 dcover_endthick = 3.0;
 dcover_mainthick = 5.0;
-dcover_slop_height = 0.25;
+dcover_slop_height = 0.35;
 dcover_slop_depth = 0.25;
-dcover_slop_inside = 1.25;
+dcover_slop_inside = 1.50;
+dcover_commonvertoff = 0.00; // slop_height or slop_inside is added too
+dcover_edge_gap_more_width = 2.0; // each side
 
 // ----- calculated -----
 
@@ -57,6 +62,19 @@ yw11 = yw2 + anchor_wall_space;
 yw12 = yw11 + wall_thick;
 yw13 = -yw6;
 
+cpp1 = dpp1 + [  dcover_slop_depth, dcover_slop_height ];
+cpp2 = dpp2 + [ -dcover_slop_depth, dcover_slop_height ];
+cppH = cpp1 + [ 0, dcover_endthick ];
+cppA = [ cpp2[0], dpp3[1] + dcover_slop_inside ];
+cppK = cppA + [ 0, dcover_mainthick ];
+cppZ = [ -ksafecover_lip, -dcover_commonvertoff ];
+cppD = cppZ + [ 0, -dcover_slop_inside ];
+cppE = cppD + [ 0, -dcover_mainthick ];
+cppC = [ dcover_slop_inside, cppD[1] ];
+cppF = cppC + dcover_mainthick * [1,-1];
+cppB = [ cppC[0], cppA[1] ];
+cppG = [ cppF[0], cppK[1] ];
+
 // anchor
 
 anchor_b = anchor_thick + anchor_rad;
@@ -176,6 +194,27 @@ module BaseProfile(){
   SomeBaseProfile($xppI, $xppF);
 }
 
+module DCoverProfileRaw(){
+  polygon([ cpp1,
+           cpp2,
+           cppA,
+           cppB,
+           cppC,
+           cppD,
+           cppE,
+           cppF,
+           cppG,
+           cppK,
+           cppH ],
+         convexity = 10);
+}
+
+module DCoverProfile(){
+  mirror([1,0])
+    translate(-cppZ)
+    DCoverProfileRaw();
+}
+
 module SWalls(ymin, ymax, t_bevel) {
   upp_app_Vars(t_bevel) {
     translate([0,ymin,0])
@@ -233,9 +272,19 @@ module Box(){
   rotate([0,0,90]) SWalls(yw6, yw13, bevel) UsualProfile();
 }
 
+module DCover(){ ////toplevel
+  translate([ -display_width/2, -hsz, 0 ])
+    rotate([0,90,0])
+    rotate([0,0,90])
+    linear_extrude( display_width - display_rhs_secs, convexity = 10)
+    DCoverProfile();
+}
+
 module KsafeBase(){ ////toplevel
   cut = main_sz + 20;
 
+  DCover();
+
   difference(){
     Box();
 
@@ -261,15 +310,23 @@ module KsafeBase(){ ////toplevel
               cut,
               thumbslot_depth+1 ]);
     }
+
+    // support frass area by display cover
+    translate([0, -hsz, 0])
+      cube(center=true,
+          [ display_width + 2 * dcover_edge_gap_more_width,
+            wall_thick * 2,
+            dcover_slop_inside * 2 + 0.01 ]);
   }
 }
 
-module DemoProfiles(){
+module DemoProfiles(){ ////toplevel
   translate([0,0,-2]) color("yellow") AnchorWallProfile();
   color("red") AnchorProfile();
   translate([0,0,2]) color("black") NearAnchorProfile();
   translate([0,0,4]) color("blue") UsualProfile();
   translate([0,0,-4]) color("pink") WebProfile();
+  translate([0,0,6]) color("purple") DCoverProfile();
 }
 
 module RimTest(){ ////toplevel