chiark / gitweb /
cable-hole-trunking-cover: lid done
[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         rotate([90, 0, 90])
44           linear_extrude(height=endwallt)
45           polygon([[-0.1,             0],
46                    [basey/2,          0],
47                    [basey/2 + bevely, bevelz],
48                    [basey/2 + bevely, innerz],
49                    [-0.1,             innerz]]);
50       }
51     }
52     translate([basex/2, 0, -1])
53       cylinder(r=holedia/2, h=bevelz+2);
54   }
55 }
56
57 module Lid(){
58   lidx = basex + endslop + endwallt;
59   for (mir=[0,1]) mirror([0,mir,0]) {
60     translate([0, basey/2 + sideslop, 0])
61       sheared_cube([lidx, sidewallt, bevelz], 0, bevelslope);
62     translate([0, basey/2 + sideslop + bevely, -tapethick])
63       cube([lidx, sidewallt, innerz + tapethick + lidt + zslop]);
64     translate([0, -1, innerz + zslop])
65       cube([lidx, 1 + basey/2 + sideslop + bevely + sidewallt, lidt]);
66     translate([basex + endslop, -1, -tapethick])
67       cube([endwallt, 1 + basey/2 + sideslop + bevely + sidewallt,
68             tapethick + innerz + zslop + 0.1]);
69   }
70 }
71
72 Base();
73 %Lid();