thicken base plate to 5mm so heat-set inserts don't protrude past plastic
[hw/altusmetrum] / mechanical / AngleBracket.scad
1 /*
2 Aluminum Extrusion 90 Degree corner bracket
3 Parametric
4 Author: BinaryConstruct
5 */
6
7 /* [Basic] */
8
9 // length
10 size_x = 1; // [1:4]
11
12 // width
13 size_y = 1; // [1:4]
14
15 // height
16 size_z = 2; // [1:4]
17
18 // include holes in vertical side
19 vertical_holes = 0; // [0:1]
20
21 // include extra diagonals
22 incremental_supports = 1; // [0:1]
23
24 // include alignment studs
25 alignment_studs = 0; // [0:1]
26
27 // slot holes
28 slot_holes = 0; // [0:1]
29
30 // screw hole diameter
31 hole_d = 4.8;
32
33
34 /* [Advanced] */
35 // thickness of base plates
36 plate_thickness = 5; // [2:4]
37
38 // thickenss of angled support
39 side_thickenss = 3; // [2:4]
40
41 // size of extrusion increment (20mm)
42 base_size = 14;
43
44 // size of alignement stud
45 alignment_stud_diameter = 5; 
46 alignment_stud_height = 1;
47 slot_length = 3;
48
49 difference()
50 {
51     union(){
52         difference(){
53             cube([size_x * base_size,size_y * base_size,size_z * base_size]);
54             
55             // hollow cut
56             translate([plate_thickness,side_thickenss,plate_thickness]) {
57                 cube([size_x * base_size, (size_y * base_size) - (side_thickenss * 2),base_size * size_z]);
58             }
59         }
60         
61         if (incremental_supports == 1) {
62             for (y=[base_size : base_size : (size_y-1) * base_size])
63                 translate([0,y-side_thickenss/2,z])
64                 cube([size_x * base_size,side_thickenss,size_z * base_size]);
65         }
66         
67         if (alignment_studs == 1) {
68             // vertical holes
69             for(z=[base_size / 2 : base_size : (size_z * base_size) - (base_size / 2)])
70             for(y=[base_size / 2 : base_size : (size_y * base_size) - (base_size / 2)])
71             {
72                 translate([0,y,z-alignment_stud_diameter]) 
73                 rotate([0,90,0]) 
74                 translate([0,0,-alignment_stud_height]) 
75                 { cylinder($fn=16, r=alignment_stud_diameter/2,h=alignment_stud_height); }
76                 
77                 translate([0,y,z+alignment_stud_diameter]) 
78                 rotate([0,90,0]) 
79                 translate([0,0,-alignment_stud_height]) 
80                 { cylinder($fn=16, r=alignment_stud_diameter/2,h=alignment_stud_height); }
81             }
82         }
83     }
84     
85     // diagonal cut   
86     translate([plate_thickness/2,size_y * base_size+1,plate_thickness/2])
87     rotate([90,0,0])
88         linear_extrude(size_y * base_size+2) {
89             polygon([
90                 [size_x * base_size,0], 
91                 [size_x * base_size,size_z * base_size],
92                 [0,size_z * base_size]]);
93         }
94       
95     // bottom holes
96     for(x=[base_size / 2  : base_size : (size_x * base_size) - (base_size / 2)])
97     for(y=[base_size / 2  : base_size : (size_y * base_size) - (base_size / 2)])
98     {
99         
100         translate([x,y,-plate_thickness/2])
101         union()
102         { 
103             cylinder($fn=16, r=hole_d/2,h=plate_thickness*2); 
104             if (slot_holes == 1) {
105                 
106                 translate([0,-hole_d/2,0])
107                 cube([slot_length,hole_d,plate_thickness*2]);
108                 
109                 translate([slot_length,0,0])
110                 cylinder($fn=16, r=hole_d/2,h=plate_thickness*2); 
111             }
112         }
113     }
114
115     // vertical holes
116     if (vertical_holes == 1) {
117         for(z=[base_size / 2 : base_size : (size_z * base_size) - (base_size / 2)])
118         for(y=[base_size / 2 : base_size : (size_y * base_size) - (base_size / 2)])
119         {
120             translate([0,y,z]) 
121             rotate([0,90,0]) 
122             translate([0,0,-plate_thickness/2]) 
123             { cylinder($fn=16, r=hole_d/2,h=plate_thickness*2); }
124         }
125     }
126
127 }
128