chiark / gitweb /
scaffold-clamp-cleat: sort out toplevels
[reprap-play.git] / fairphone-battery-case.scad
index 757c4967b5cd14b7951cd2b4ffe4836a273bf075..557271d3e98d329d9982c19b574658fe7599ada0 100644 (file)
@@ -1,22 +1,37 @@
 // -*- C -*-
 
-mainwall_th = 2.5;
-smallwall_th = 1.5;
+include <utils.scad>
 
-seal_th = 0.3 + 0.6; // total gap for seal etc.
-behind_recess = 1.0;
+mainwall_th = 3.0;
+smallwall_th = 2.0;
 
-recess_gap_end = 0.2;
+seal_th = 0.3 + 0.6 + 0.6 - 0.4 - 0.4 + 0.2; // total gap for seal etc.
+behind_recess = 1.5;
+
+recess_gap_end = 0.4;
 
 lid_edge_th = 0.5;
 
-battery_len = 66.55 + 0.75;
-battery_th = 6.55 + 0.75;
-battery_wdth = 44.38 + 0.75;
+battery_len = 66.55 + 1.25 -.55;
+battery_th = 6.55 + 0.75 - .60;
+battery_wdth = 44.38 + 0.75 -.55;
+
+battery_base_indent = 0.94 + 0.50;
+battery_base_indent_fromside_outside = 4;
+battery_base_indent_fromside_inside = 10;
+
+handle_height = 3.5;
+handle_inward = 10;
+handle_len = 5;
+
+pushhole_ell_sz = 4.75;
+pushhole_ell_th = 1.75;
+pushhole_circle_dia = 4.0;
 
 // for testing:
-battery_len = 3;
-battery_wdth = 15;
+//battery_len = 3;
+//battery_wdth = 15;
+//battery_base_indent_fromside_inside = 6;
 
 // calculated
 
@@ -29,9 +44,15 @@ bpp3 = [ bpp2[0] + (bpp1 - bpp0)[1], bpp0[1] ];
 bpp4 = [ bpp3[0], bpp0[1] + mainwall_th ];
 lppC = bpp3 + [ 0, -recess_gap_end ];
 
+lppF = lppC + [ handle_height, 0 ];
+
 s0 = battery_wdth/2;
+s0i = s0 - battery_th/2;
 s1 = s0 + smallwall_th;
 
+l1 = s1 - handle_inward;
+l0 = l1 - handle_len;
+
 echo(
      bpp0,
      bpp1,
@@ -60,7 +81,7 @@ bpp6 = [ bpp5[0], bpp9[1] ];
 lppE = [ lppA[0], bpp9[1] ];
 lppD = [ lppC[0], bpp9[1] ];
 
-module BaseHalfPlan(){
+module BaseHalfPlan(indent=0){
   polygon([ bpp0,
            bpp1,
            bpp2,
@@ -68,8 +89,8 @@ module BaseHalfPlan(){
            bpp4,
            bpp5,
            bpp6,
-           bpp7,
-           bpp8
+           bpp7 + indent * [1,0],
+           bpp8 + indent * [1,0]
            ]);
 }
 
@@ -90,11 +111,16 @@ module LidHalfPlan(){
            ]);
 }
 
+module HandleHalfPlan(){
+  translate(lppE)
+    square(lppF - lppE);
+}
+
 module ExtrudePlan(from,to){
   rotate([0,-90,0])
   for (mj=[0,1]) {
     mirror([0,0,mj]) translate([0,0,from]){
-      linear_extrude(height= to-from){
+      linear_extrude(height= to-from, convexity=5){
        for (mi=[0,1]) {
          mirror([0,mi])
            translate([0, battery_th/2])
@@ -105,6 +131,17 @@ module ExtrudePlan(from,to){
   }
 }
 
+module PushHolePlan(){ ////toplevel
+  translate(-(pushhole_ell_th * 0.10 +
+             pushhole_ell_sz * 0.10) * [1,1]) {
+    for (r=[0,90])
+      rotate(r)
+       translate(-pushhole_ell_th * 0.5 * [1,1])
+       square([ pushhole_ell_sz, pushhole_ell_th ]);
+  }
+  circle(pushhole_circle_dia/2, $fn=40);
+}
+
 module PlanDemo(){ ////toplevel
   color("blue") BaseHalfPlan();
   color("red") LidHalfPlan();
@@ -112,12 +149,35 @@ module PlanDemo(){ ////toplevel
 }
 
 module Base(){ ////toplevel
-  ExtrudePlan(0,s1) BaseHalfPlan();
-  ExtrudePlan(s0,s1) SideHalfPlan();
+  difference(){
+    ExtrudePlan(0,s1) BaseHalfPlan();
+    linextr(-(10+battery_len), battery_len+10, convexity=5) PushHolePlan();
+  }
+  difference(){
+    union(){
+      ExtrudePlan(s0i, s1) SideHalfPlan();
+      ExtrudePlan(s0 - battery_base_indent_fromside_inside,
+                 s0 - battery_base_indent_fromside_outside
+                 ) BaseHalfPlan(indent = battery_base_indent);
+    }
+    for (m=[0,1])
+      mirror([m,0,0])
+       translate([s0i, 0, bpp7[0] - 0.1])
+       cylinder(r= battery_th/2, h=100, $fs=0.5);
+  }
+}
+
+module BaseHalfTest(){ ////toplevel
+  intersection(){
+    Base();
+    translate([-100,0,-100])
+      cube([200,200,200]);
+  }
 }
 
 module Lid(){ ////toplevel
   ExtrudePlan(0,s1) LidHalfPlan();
+  ExtrudePlan(l0,l1) HandleHalfPlan();
 }
 
 module Demo(){ ////toplevel