chiark / gitweb /
nook-case: wip, initial attempt
[reprap-play.git] / nook-case.scad
index be1d060e674a19c9f9998dbaca3d555e326d507c..dfed77f14f4c45658031236ad8a224bacc63490e 100644 (file)
@@ -2,17 +2,24 @@
 
 include <utils.scad>
 
-nook_th = 8; // xxx
+nook_th = 12.41 + 0.50;
 nook_cnr_rad = 10;
 
 case_th = 2.5;
 ledge_w = 4;
-tape_th = 1.5;
+tape_th = 1.75;
 tape_inside = 2.0;
 
+gap = 0.5 * [1,1];
+
+tape_w = 15;
+
+test_pillar = 4;
+
 // calculated
 
 ledge_h = case_th;
+lid_th = case_th;
 
 spp0 = [0,0];
 spp1 = spp0 + case_th * [-1,0];
@@ -21,13 +28,42 @@ spp8 = spp9 + nook_th * [0,-1];
 spp7 = spp8 + case_th * [-1,-1];
 
 spp11y = spp1[1] - tape_th;
-spp4y  = 0.5 * (spp0[1] + spp8[1]);
+spp4y  = 0.5 * (spp0[1] + spp7[1]);
 spp3y = spp4y + tape_inside/2;  spp5y = spp4y - tape_inside/2;
 spp2y = spp3y + tape_th;        spp6y = spp5y - tape_th;
 
+spp20 = spp8 + nook_cnr_rad * [1,0];
+spp20x = spp20[0];
+
+tppA = spp0 + gap;
+tppB = spp1 + [0, gap[1]];
+tppC = tppB + lid_th * [0,1];
+tppD = [ spp20x, tppC[1] ];
+tppE = [ spp20x, tppB[1] ];
+tppF = tppA + ledge_w * [1,0];
+tppG = tppF + ledge_h * [0,-1];
+tppH = [ tppA[0], tppG[1] ];
+
+tppJx = tppA[0] + tape_th;
+
 module SideMainProfile() {
   rectfromto(spp7, spp0);
-  rectfromto(spp7, spp8 + nook_cnr_rad * [1,0]);
+  rectfromto(spp7, spp20);
+}
+
+module TopTapeCutout() {
+  polygon([ tppA,
+           tppA + [-1,-1],
+           tppH + [-1,-1],
+           [ tppJx, tppH[1]-1 ],
+           [ tppJx, tppC[1]+1 ],
+           [ tppA[0], tppC[1]+1 ]]);
+}
+
+module TopMainProfile() {
+  l = [ tppA, tppB, tppC, tppD, tppE, tppF, tppG, tppH ];
+  echo(l);
+  polygon(l);
 }
 
 module SideTapeCutout1(y0,y1) {
@@ -42,13 +78,34 @@ module SideTapeCutout() {
   SideTapeCutout1(spp11y, spp1[1] + 1);
 }
 
-module Demo(){
-  translate([0,0,-2]) color("red") SideMainProfile();
-  difference(){
+module Demo(){ ////toplevel
+  translate([0,0,-2]) SideMainProfile(); 
+  translate([0,0,-2]) color("yellow") TopMainProfile();
+  color("red") difference(){
     SideMainProfile();
     SideTapeCutout();
   }
+  translate([0,0,0]) color("purple") difference(){
+    TopMainProfile();
+    TopTapeCutout();
+  }
   //%SideTapeCutout();
 }
 
-Demo();
+module TestExtrude(){
+  difference(){
+    linextr_y_xz(-test_pillar, tape_w+test_pillar) children(0);
+    linextr_y_xz(           0, tape_w            ) children(1);
+  }
+}
+
+module TestSide(){ ////toplevel
+  TestExtrude() { SideMainProfile(); SideTapeCutout(); }
+}
+
+module TestTop(){ ////toplevel
+  TestExtrude() { TopMainProfile(); TopTapeCutout(); }
+}
+module TestTopPrint(){ ////toplevel
+  rotate([180,0,0]) TestTop();
+}