chiark / gitweb /
ksafe-base: toplevels
[reprap-play.git] / ksafe-base.scad
index 2866278a2a7e9021af044eec63bed9f59f22c7ed..d6daa8f91bf3b0e5eb0be822a9a02d8d529edd95 100644 (file)
@@ -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,6 +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(); SomeBaseProfile($gppS, $xppF); }
+
+  // front and rear walls
+  rotate([0,0,90]) SWalls(yw6, yw13, bevel) UsualProfile();
+}
+
+module KsafeBase(){ ////toplevel
+  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(){
@@ -207,4 +251,6 @@ module DemoProfiles(){
 }
 
 //DemoProfiles();
-KsafeBase();
+//Box();
+//KsafeBase();
+//RimTest();