chiark / gitweb /
cable-hole-trunking-cover: separate basebevelt
[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 cutoutsz= 10;
10
11 innerz = 10;
12
13 basex = holedia + sidewidth*2;
14 basey = holedia + tapewidth*2;
15
16 bevelz = 3;
17 bevelslope = 0.75;
18 bevely = bevelz * bevelslope;
19 basebevelt = 3;
20
21 sideslop = 0.5;
22
23 basebaset = 2;
24 sidewallt = 2;
25
26 lidt = 1.3;
27 endwallt = 2;
28 zslop = 0.75;
29 endslop = 0.75;
30
31 module sheared_cube(sz, xperz, yperz) {
32   multmatrix([[1,0,xperz,0],
33               [0,1,yperz,0],
34               [0,0,1,    0],
35               [0,0,0,    1]])
36     cube(sz);
37 }
38
39 module Base(cutouty){
40   echo(cutouty);
41   difference(){
42     union(){
43       for (mir=[0,1]) mirror([0,mir,0]) {
44         translate([0, basey/2 - basebevelt, 0])
45           sheared_cube([basex, basebevelt, bevelz], 0, bevelslope);
46         cube([basex, basey/2, basebaset]);
47       }
48     }
49     translate([basex/2, 0, -1])
50       cylinder(r=holedia/2, h=bevelz+2);
51   }
52   rotate([90, 0, 90]) {
53     linear_extrude(height=endwallt) {
54       difference(){
55         for (mir=[0,1]) mirror([mir,0,0]) {
56             polygon([[-0.1,             0],
57                      [basey/2,          0],
58                      [basey/2 + bevely, bevelz],
59                      [basey/2 + bevely, innerz],
60                      [-0.1,             innerz]]);
61         }
62         translate([cutouty, 0])
63           square(size=[cutoutsz, 3*innerz], center=true);
64       }
65     }
66   }
67 }
68
69 module Lid(){
70   lidx = basex + endslop + endwallt;
71   for (mir=[0,1]) mirror([0,mir,0]) {
72     translate([0, basey/2 + sideslop + bevely, 0])
73       rotate([90,0,90])
74       linear_extrude(height = lidx)
75       polygon([[0,         0],
76                [-bevely,   0],
77                [0,         bevelz],
78                [0,         innerz + lidt + zslop],
79                [sidewallt, innerz + lidt + zslop],
80                [sidewallt, -tapethick],
81                [0,         -tapethick]]);
82     translate([0, -1, innerz + zslop])
83       cube([lidx, 1 + basey/2 + sideslop + bevely + sidewallt, lidt]);
84     translate([basex + endslop, -1, -tapethick])
85       cube([endwallt, 1 + basey/2 + sideslop + bevely + sidewallt,
86             tapethick + innerz + zslop + 0.1]);
87   }
88 }
89
90 module LidT(){ ////toplevel
91   rotate([180,0,0]) Lid();
92 }
93
94 module BaseCMid(){ ////toplevel
95   Base(0);
96 }
97
98 module BaseCTop(){ ////toplevel
99   Base(basey/2 + bevely - cutoutsz/2);
100 }
101
102 module BaseCBot(){ ////toplevel
103   Base(-(basey/2 + bevely - cutoutsz/2));
104 }
105
106 module Demo(){ ////toplevel
107   BaseCTop();
108   %Lid();
109 }
110
111 //BaseCTop();
112 //BaseCMid();
113 //BaseCBot();
114 //Lid();
115 //LidT();
116 //Demo();