chiark / gitweb /
e6faa8ee283c9998a6bbbe7394f03668baeb759a
[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       for (mir=[0,1]) mirror([0,mir,0]) {
36         translate([0, basey/2 - basebevelt, 0])
37           sheared_cube([basex, basebevelt, bevelz], 0, bevelslope);
38         cube([basex, basey/2, basebaset]);
39         rotate([90, 0, 90])
40           linear_extrude(height=endwallt)
41           polygon([[-0.1,             0],
42                    [basey/2,          0],
43                    [basey/2 + bevely, bevelz],
44                    [basey/2 + bevely, innerz],
45                    [-0.1,             innerz]]);
46       }
47     }
48     translate([basex/2, 0, -1])
49       cylinder(r=holedia/2, h=bevelz+2);
50   }
51 }
52
53 module Lid(){
54   for (mir=[0,1]) mirror([0,mir,0]) {
55     translate([0, basey/2 + sideslop, 0])
56       sheared_cube([basex, basebevelt, bevelz], 0, bevelslope);
57   }
58 }
59
60 Base();
61 Lid();