chiark / gitweb /
cable-hole-trunking-cover: break back wall out properly, nfc
[reprap-play.git] / cable-hole-trunking-cover.scad
1 // -*- C -*-
2
3 holedia = 25.4;
4
5 sidewidth = 5;
6 tapewidth = 7;
7 tapethick = 1;
8
9 innerz = 10;
10
11 basex = holedia + sidewidth*2;
12 basey = holedia + tapewidth*2;
13
14 bevelz = 3;
15 bevelslope = 0.75;
16 bevely = bevelz * bevelslope;
17
18 sideslop = 0.5;
19
20 basebaset = 2;
21 sidewallt = 3;
22
23 lidt = 2;
24 endwallt = 2;
25 zslop = 0.75;
26 endslop = 0.75;
27
28 module sheared_cube(sz, xperz, yperz) {
29   multmatrix([[1,0,xperz,0],
30               [0,1,yperz,0],
31               [0,0,1,    0],
32               [0,0,0,    1]])
33     cube(sz);
34 }
35
36 module Base(){
37   difference(){
38     union(){
39       for (mir=[0,1]) mirror([0,mir,0]) {
40         translate([0, basey/2 - sidewallt, 0])
41           sheared_cube([basex, sidewallt, bevelz], 0, bevelslope);
42         cube([basex, basey/2, basebaset]);
43       }
44     }
45     translate([basex/2, 0, -1])
46       cylinder(r=holedia/2, h=bevelz+2);
47   }
48   rotate([90, 0, 90]) {
49     linear_extrude(height=endwallt) {
50       difference(){
51         for (mir=[0,1]) mirror([mir,0,0]) {
52             polygon([[-0.1,             0],
53                      [basey/2,          0],
54                      [basey/2 + bevely, bevelz],
55                      [basey/2 + bevely, innerz],
56                      [-0.1,             innerz]]);
57         }
58       }
59     }
60   }
61 }
62
63 module Lid(){
64   lidx = basex + endslop + endwallt;
65   for (mir=[0,1]) mirror([0,mir,0]) {
66     translate([0, basey/2 + sideslop, 0])
67       sheared_cube([lidx, sidewallt, bevelz], 0, bevelslope);
68     translate([0, basey/2 + sideslop + bevely, -tapethick])
69       cube([lidx, sidewallt, innerz + tapethick + lidt + zslop]);
70     translate([0, -1, innerz + zslop])
71       cube([lidx, 1 + basey/2 + sideslop + bevely + sidewallt, lidt]);
72     translate([basex + endslop, -1, -tapethick])
73       cube([endwallt, 1 + basey/2 + sideslop + bevely + sidewallt,
74             tapethick + innerz + zslop + 0.1]);
75   }
76 }
77
78 Base();
79 %Lid();