chiark / gitweb /
cable-hole-trunking-cover: wip lid
[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
27 module sheared_cube(sz, xperz, yperz) {
28   multmatrix([[1,0,xperz,0],
29               [0,1,yperz,0],
30               [0,0,1,    0],
31               [0,0,0,    1]])
32     cube(sz);
33 }
34
35 module Base(){
36   difference(){
37     union(){
38       for (mir=[0,1]) mirror([0,mir,0]) {
39         translate([0, basey/2 - sidewallt, 0])
40           sheared_cube([basex, sidewallt, bevelz], 0, bevelslope);
41         cube([basex, basey/2, basebaset]);
42         rotate([90, 0, 90])
43           linear_extrude(height=endwallt)
44           polygon([[-0.1,             0],
45                    [basey/2,          0],
46                    [basey/2 + bevely, bevelz],
47                    [basey/2 + bevely, innerz],
48                    [-0.1,             innerz]]);
49       }
50     }
51     translate([basex/2, 0, -1])
52       cylinder(r=holedia/2, h=bevelz+2);
53   }
54 }
55
56 module Lid(){
57   lidx = basex;
58   for (mir=[0,1]) mirror([0,mir,0]) {
59     translate([0, basey/2 + sideslop, 0])
60       sheared_cube([lidx, sidewallt, bevelz], 0, bevelslope);
61     translate([0, basey/2 + sideslop + bevely, -tapethick])
62       cube([lidx, sidewallt, innerz + tapethick + lidt + zslop]);
63     translate([0, 0, innerz + zslop])
64       cube([lidx, basey/2 + sideslop + bevely + sidewallt, lidt]);
65   }
66 }
67
68 Base();
69 Lid();