chiark / gitweb /
nook-case: usb port
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 2 Sep 2020 21:34:28 +0000 (22:34 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 2 Sep 2020 21:34:28 +0000 (22:34 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
nook-case.scad

index f3382dade1eff072b89a43ead094bb918546c41f..4bca945ff8e70784636dd0bc70a6dcbcf3577740 100644 (file)
@@ -6,6 +6,9 @@ nook_th = 12.41 + 0.50;
 nook_w = 127.12 + 0.75;
 nook_h = 123.44 + 21.88 + 21.05 + 0.75;
 
+usb_w = 12.5;
+usb_below = 2.5;
+
 nook_cnr_rad = 10;
 
 case_th = 2.5;
@@ -29,6 +32,9 @@ tooth_w = 15;
 
 $test = false;
 
+$fa = $test ? 10 : 3;
+$fs = $test ? 0.1 : 1;
+
 // calculated
 
 tooth_height = nook_th;
@@ -71,6 +77,9 @@ etxa = nom_cnr[0] - engage_l2;
 etxb = etxa - engage_l1;
 etxc = -(nom_cnr[0] - engage_l2);
 
+tapa = nom_cnr[1] - engage_l2;
+tapb = tapa - tape_w;
+
 tppS = tppB + [-gap[0], 0];
 tppP = [ tppS[0] - tooth_th, tppC[1] ];
 tppQ = tppP + tooth_height * [0,-1] + tooth_inward * [1,0];
@@ -129,7 +138,7 @@ module ToothProfile(){
             tppM,
             tppS]);
     translate(tppM)
-      circle(r= tooth_th/2, $fa=3, $fs=0.1);
+      circle(r= tooth_th/2);
   }
 }
 
@@ -153,18 +162,26 @@ module Demo(){ ////toplevel
 }
 
 module FaceCore(z0,z1, extra_left, extra_right){
-  for (mx=[0,1]) mirror([mx,0,0]) {
-      for (my=[0,1]) mirror([0,my,0]) {
-         translate(-nom_cnr) {
-           rotate_extrude(angle=90, convexity=10)
-             translate(-[1,0,0] * nook_cnr_rad)
-             children(mx);
+  difference(){
+    for (mx=[0,1]) mirror([mx,0,0]) {
+       for (my=[0,1]) mirror([0,my,0]) {
+           translate(-nom_cnr) {
+             rotate_extrude(angle=90, convexity=10)
+               translate(-[1,0,0] * nook_cnr_rad)
+               children(mx);
+           }
          }
-       }
-      translate([nook_w/2, 0,0])
-       linextr_y_xz(-nom_cnr[1]-0.1, nom_cnr[1]+0.1)
-       children(1-mx);
-    }
+       translate([nook_w/2, 0,0])
+         linextr_y_xz(-nom_cnr[1]-0.1, nom_cnr[1]+0.1)
+         children(1-mx);
+      }
+    for (my=[0,1]) mirror([0,my,0]) {
+       translate([-nook_w/2, 0,0])
+         mirror([1,0,0])
+         linextr_y_xz(tapb, tapa)
+         children(2);
+      }
+  }
   for (my=[0,1]) mirror([0,my,0]) {
       translate([0, -nook_h/2, 0]) {
        linextr_x_yz(-nom_cnr[0]-0.1,    etxc + extra_left)  children(0);
@@ -180,9 +197,16 @@ module FaceCore(z0,z1, extra_left, extra_right){
 }
 
 module Base(){ ////toplevel
-  FaceCore(spp7[1],spp8[1], 0.3, 0) {
-    LeftSideMainProfile();
-    RightSideMainProfile();
+  difference(){
+    FaceCore(spp7[1],spp8[1], 0.3, 0) {
+      LeftSideMainProfile();
+      RightSideMainProfile();
+      SideTapeCutout();
+    }
+    translate([0, -nook_h/2, 0])
+      mirror([0,1,0])
+      linextr_x_yz(-usb_w/2, usb_w/2)
+      rectfromto(spp8 + [-40, usb_below], [40, 40]);
   }
 }
 
@@ -190,6 +214,7 @@ module Top(){ ////toplevel
   FaceCore(tppE[1],tppD[1], -gap[0], gap[0] + 0.3) {
     LeftTopMainProfile();
     RightTopMainProfile();
+    TopTapeCutout();
   }
   translate([tooth_x, nook_h/2, 0])
     linextr_x_yz(-tooth_w/2, +tooth_w/2)
@@ -204,6 +229,11 @@ module TestExtrude(){
   }
 }
 
+module Demo3(){ ////toplevel
+  color("purple") Top();
+  color("red") Base();
+}
+
 module TestSide(){ ////toplevel
   TestExtrude() { LeftSideMainProfile(); SideTapeCutout(); }
 }