30 walll = basel + webt + (pad ? padl : -0.1);
32 webw = min(basew, pad ? padw : padt);
34 module slothole(sz, slot, thick, csunk=true, slop=holeslop) {
36 for (y = [-slot/2,slot/2]) {
37 translate([0,y,-0.15])
38 cylinder(r1=sz/2 + slop,
39 r2=sz/2 + (csunk ? thick : 0) + slop,
47 translate([0, -basew, 0])
48 cube([basel, basew, baset]);
50 translate([basel/2, -(basew+wallt)/2, 0])
51 slothole(baseholesz, baseholeslot, baset, slop=baseholeslop);
55 translate([0.1, 0.3, 0.1])
57 linear_extrude(height=wallt){
59 [0, wallh/2 + wallholesz/2 + wallt + wallt],
62 [walll, wallh - padt - padt],
67 translate([basel/2, 0, wallholeh])
69 slothole(wallholesz, wallholeslot, wallt, csunk=false);
72 translate([basel-0.01, 0, 0]) {
74 linear_extrude(height=webt+0.02) {
85 translate([basel+webt, -padw, wallh-padt]) {
87 cube([padl, padw, padt]);
88 translate([padl/2, padw/2, -1])
89 cylinder(r=padholesz/2 + holeslop, h=padt+2);
95 module BracketR(){ ////toplevel
96 rotate([-90,0,0]) Bracket();
99 module BracketL(){ ////toplevel
100 mirror([1,0,0]) BracketR();
108 protlidt = protwallt;
112 module RearCableProtector(){
113 for (x = [-protwallt, protinnerw]) {
114 translate([x, 0, 0]) {
115 cube([protwallt, protd, protinnerh+protlidt]);
118 translate([-(protwallt-0.1), 0, protinnerh])
119 cube([protinnerw + (protwallt-0.1)*2, protd, protlidt]);
121 translate([(lr ? -(protwingw + protwallt) : protinnerw), 0, 0]) {
124 cube([protwingw, protwingd, protbaset]);
125 translate([protwingw/2, protwingd/2, 0])
126 rotate([0,0, lr ? 45 : -45])
127 slothole(baseholesz, baseholeslot, baset, slop=baseholeslop);
133 module RearCableProtectorT(){ ////toplevel
134 rotate([90,0,0]) RearCableProtector();
149 module ChannelBracket(){
150 translate([0, -chabd, 0])
151 cube([chabwallt, chabd, chabinnerh+chablidt]);
152 translate([-chablidw, -chabd, chabinnerh]) {
154 cube([chablidw + chabwallt - 0.1, chabd - 0.1, chablidt]);
155 translate([chablidw/2, chabd/2, -1])
156 cylinder(r=chablidholed/2, h=chablidt+2, $fn=20);
159 translate([chabwallt-0.1, -chabd, 0]) {
161 cube([chabbasew, chabd-0.1, chabbaset]);
162 translate([chabbasew/2, (chabd-chabwebt)/2, 0])
164 slothole(baseholesz, chabslot, baset, slop=baseholeslop);
167 rotate([90,0,0]) linear_extrude(height=chabwebt) {
168 polygon([[-chablidw, chabinnerh],
169 [-chablidw, chablidt+chabinnerh],
170 [-chabwebh, chablidt+chabinnerh+chabwebh],
171 [+chabwebh, chablidt+chabinnerh+chabwebh],
172 [+chabbasew, chabbaset],
179 module ChannelBracketT(){
180 rotate([-90,0,0]) ChannelBracket();
183 module Kit(){ ////toplevel
184 for (y=[0, -wallh-5]) {
186 translate([5,0,0]) BracketR();
194 //RearCableProtectorT();