chiark / gitweb /
cable-hole-trunking-cover: nearly done?
[reprap-play.git] / cable-hole-trunking-cover.scad
index ce44475e34cce28f0fe36772c744898790456f34..9491027b75737603bdd822bcf6bf2be9f2addadd 100644 (file)
@@ -4,6 +4,9 @@ holedia = 25.4;
 
 sidewidth = 5;
 tapewidth = 7;
+tapethick = 1;
+
+cutoutsz= 10;
 
 innerz = 10;
 
@@ -17,9 +20,12 @@ bevely = bevelz * bevelslope;
 sideslop = 0.5;
 
 basebaset = 2;
-basebevelt = 3;
+sidewallt = 3;
 
+lidt = 2;
 endwallt = 2;
+zslop = 0.75;
+endslop = 0.75;
 
 module sheared_cube(sz, xperz, yperz) {
   multmatrix([[1,0,xperz,0],
@@ -29,34 +35,63 @@ module sheared_cube(sz, xperz, yperz) {
     cube(sz);
 }
 
-module Base(){
+module Base(cutouty){
+  echo(cutouty);
   difference(){
     union(){
-      translate([0, basey-basebevelt, 0])
-       sheared_cube([basex, basebevelt, bevelz], 0, bevelslope);
-      sheared_cube([basex, basebevelt, bevelz], 0, -bevelslope);
-      cube([basex, basey, basebaset]);
+      for (mir=[0,1]) mirror([0,mir,0]) {
+       translate([0, basey/2 - sidewallt, 0])
+         sheared_cube([basex, sidewallt, bevelz], 0, bevelslope);
+       cube([basex, basey/2, basebaset]);
+      }
     }
-    translate([basex/2, basey/2, -1])
+    translate([basex/2, 0, -1])
       cylinder(r=holedia/2, h=bevelz+2);
   }
-
-  rotate([90, 0, 90])
-    linear_extrude(height=endwallt)
-    polygon([[0,     0],
-            [basey, 0],
-            [basey + bevely, bevelz],
-            [basey + bevely, innerz],
-            [      - bevely, innerz],
-            [      - bevely, bevelz]]);
+  rotate([90, 0, 90]) {
+    linear_extrude(height=endwallt) {
+      difference(){
+       for (mir=[0,1]) mirror([mir,0,0]) {
+           polygon([[-0.1,             0],
+                    [basey/2,          0],
+                    [basey/2 + bevely, bevelz],
+                    [basey/2 + bevely, innerz],
+                    [-0.1,             innerz]]);
+       }
+       translate([cutouty, 0])
+         square(size=[cutoutsz, 3*innerz], center=true);
+      }
+    }
+  }
 }
 
 module Lid(){
-  translate([0, basey + sideslop, 0])
-    sheared_cube([basex, basebevelt, bevelz], 0, bevelslope);
-  translate([0, -basebevelt - sideslop, 0])
-    sheared_cube([basex, basebevelt, bevelz], 0, -bevelslope);
+  lidx = basex + endslop + endwallt;
+  for (mir=[0,1]) mirror([0,mir,0]) {
+    translate([0, basey/2 + sideslop, 0])
+      sheared_cube([lidx, sidewallt, bevelz], 0, bevelslope);
+    translate([0, basey/2 + sideslop + bevely, -tapethick])
+      cube([lidx, sidewallt, innerz + tapethick + lidt + zslop]);
+    translate([0, -1, innerz + zslop])
+      cube([lidx, 1 + basey/2 + sideslop + bevely + sidewallt, lidt]);
+    translate([basex + endslop, -1, -tapethick])
+      cube([endwallt, 1 + basey/2 + sideslop + bevely + sidewallt,
+           tapethick + innerz + zslop + 0.1]);
+  }
+}
+
+module LidT(){ ////toplevel
+  rotate([180,0,0]) Lid();
+}
+
+module BaseCMid(){ ////toplevel
+  Base(0);
+}
+
+module BaseCTop(){ ////toplevel
+  Base(basey/2 + bevely - cutoutsz/2);
 }
 
-Base();
-Lid();
+//BaseCTop();
+//BaseCMid();
+//LidT();