chiark / gitweb /
ce44475e34cce28f0fe36772c744898790456f34
[reprap-play.git] / cable-hole-trunking-cover.scad
1 // -*- C -*-
2
3 holedia = 25.4;
4
5 sidewidth = 5;
6 tapewidth = 7;
7
8 innerz = 10;
9
10 basex = holedia + sidewidth*2;
11 basey = holedia + tapewidth*2;
12
13 bevelz = 3;
14 bevelslope = 0.75;
15 bevely = bevelz * bevelslope;
16
17 sideslop = 0.5;
18
19 basebaset = 2;
20 basebevelt = 3;
21
22 endwallt = 2;
23
24 module sheared_cube(sz, xperz, yperz) {
25   multmatrix([[1,0,xperz,0],
26               [0,1,yperz,0],
27               [0,0,1,    0],
28               [0,0,0,    1]])
29     cube(sz);
30 }
31
32 module Base(){
33   difference(){
34     union(){
35       translate([0, basey-basebevelt, 0])
36         sheared_cube([basex, basebevelt, bevelz], 0, bevelslope);
37       sheared_cube([basex, basebevelt, bevelz], 0, -bevelslope);
38       cube([basex, basey, basebaset]);
39     }
40     translate([basex/2, basey/2, -1])
41       cylinder(r=holedia/2, h=bevelz+2);
42   }
43
44   rotate([90, 0, 90])
45     linear_extrude(height=endwallt)
46     polygon([[0,     0],
47              [basey, 0],
48              [basey + bevely, bevelz],
49              [basey + bevely, innerz],
50              [      - bevely, innerz],
51              [      - bevely, bevelz]]);
52 }
53
54 module Lid(){
55   translate([0, basey + sideslop, 0])
56     sheared_cube([basex, basebevelt, bevelz], 0, bevelslope);
57   translate([0, -basebevelt - sideslop, 0])
58     sheared_cube([basex, basebevelt, bevelz], 0, -bevelslope);
59 }
60
61 Base();
62 Lid();