2021-01-04 18:08:21 +00:00
|
|
|
$fn = 33;
|
2020-12-30 21:47:25 +00:00
|
|
|
|
2021-01-04 18:08:21 +00:00
|
|
|
height = 40;
|
|
|
|
hwidth = 40;
|
|
|
|
thickness = 5;
|
2020-12-30 21:47:25 +00:00
|
|
|
|
2021-01-04 18:08:21 +00:00
|
|
|
vthickness = 20;
|
|
|
|
vwidth = 40.3;
|
|
|
|
vheight = 80;
|
2020-12-30 21:47:25 +00:00
|
|
|
|
2021-01-01 10:29:46 +00:00
|
|
|
//https://de.wikipedia.org/wiki/Durchgangsbohrung
|
2021-01-04 18:08:21 +00:00
|
|
|
M4HoleDiam = 4.4;
|
2020-12-30 21:47:25 +00:00
|
|
|
|
2021-01-04 18:08:21 +00:00
|
|
|
holedistance = 10;
|
2020-12-30 21:47:25 +00:00
|
|
|
|
2021-01-04 18:08:21 +00:00
|
|
|
horizontalcenterholes = true;
|
2020-12-30 21:47:25 +00:00
|
|
|
|
2021-01-04 18:08:21 +00:00
|
|
|
// calling main
|
|
|
|
horizontal_angle_bracket();
|
|
|
|
|
|
|
|
module horizontal_angle_bracket() {
|
|
|
|
render() difference() {
|
|
|
|
frame();
|
|
|
|
holes();
|
|
|
|
}
|
2020-12-30 21:47:25 +00:00
|
|
|
}
|
|
|
|
|
2021-01-04 18:08:21 +00:00
|
|
|
module frame() {
|
2020-12-30 21:47:25 +00:00
|
|
|
// left tile
|
2021-01-04 18:08:21 +00:00
|
|
|
cube([hwidth, thickness, height]);
|
|
|
|
translate([0, thickness, 0]) sidetriangle();
|
|
|
|
translate([0, thickness, height - thickness]) sidetriangle();
|
|
|
|
|
2020-12-30 21:47:25 +00:00
|
|
|
// left to back tile
|
2021-01-04 18:08:21 +00:00
|
|
|
translate([hwidth, 0, 0]) cube([thickness, vthickness, height]);
|
|
|
|
|
2020-12-30 21:47:25 +00:00
|
|
|
// left triangle
|
2021-01-04 18:08:21 +00:00
|
|
|
translate([hwidth, 0, height]) rotate([90, 0, 90]) middletriangle();
|
2020-12-30 21:47:25 +00:00
|
|
|
|
|
|
|
// covers upper edge of above
|
|
|
|
translate([hwidth, vthickness, 0]) cube([vwidth + thickness * 2, thickness, vheight]);
|
|
|
|
|
2021-01-04 18:08:21 +00:00
|
|
|
// right to back tile
|
|
|
|
translate([hwidth + vwidth + thickness, 0, 0]) cube([thickness, vthickness, height]);
|
|
|
|
|
2020-12-30 21:47:25 +00:00
|
|
|
// right triangle
|
2021-01-04 18:08:21 +00:00
|
|
|
translate([hwidth + vwidth + thickness, 0, height]) rotate([90, 0, 90]) middletriangle();
|
|
|
|
|
|
|
|
// right tile
|
|
|
|
translate([hwidth + vwidth + thickness * 2, 0, 0]) cube([hwidth, thickness, height]);
|
|
|
|
|
|
|
|
translate([hwidth * 2 + vwidth + thickness * 2, thickness, thickness]) rotate([0, 180, 0]) sidetriangle();
|
|
|
|
translate([hwidth * 2 + vwidth + thickness * 2, thickness, height]) rotate([0, 180, 0]) sidetriangle();
|
|
|
|
|
2020-12-30 21:47:25 +00:00
|
|
|
}
|
|
|
|
|
2021-01-04 18:08:21 +00:00
|
|
|
module middletriangle() {
|
|
|
|
linear_extrude(thickness) polygon([[0, 0], [vthickness, 0], [vthickness, vheight - height]]);
|
2020-12-30 21:47:25 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
module sidetriangle() {
|
2021-01-04 18:08:21 +00:00
|
|
|
linear_extrude(5) polygon([[0, 0], [hwidth, 0], [hwidth, vthickness]]);
|
2020-12-30 21:47:25 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
module holes() {
|
|
|
|
// left holes
|
|
|
|
leftholes();
|
2021-01-04 18:08:21 +00:00
|
|
|
|
2020-12-30 21:47:25 +00:00
|
|
|
// right holes
|
2021-01-04 18:08:21 +00:00
|
|
|
translate([hwidth + vwidth + thickness * 2, 0, 0]) leftholes();
|
|
|
|
|
2020-12-30 21:47:25 +00:00
|
|
|
// center holes
|
2021-01-04 18:08:21 +00:00
|
|
|
translate([hwidth + thickness, vthickness, 0]) centerholes();
|
2020-12-30 21:47:25 +00:00
|
|
|
}
|
|
|
|
|
2021-01-04 18:08:21 +00:00
|
|
|
module leftholes() {
|
2020-12-30 21:47:25 +00:00
|
|
|
translate([holedistance, 0, holedistance]) XM3Hole();
|
|
|
|
translate([hwidth - holedistance, 0, holedistance]) XM3Hole();
|
|
|
|
translate([holedistance, 0, height - holedistance]) XM3Hole();
|
|
|
|
translate([hwidth - holedistance, 0, height - holedistance]) XM3Hole();
|
|
|
|
}
|
|
|
|
|
|
|
|
module centerholes() {
|
|
|
|
translate([holedistance, 0, holedistance]) XM3Hole();
|
|
|
|
translate([vwidth - holedistance, 0, holedistance]) XM3Hole();
|
|
|
|
translate([holedistance, 0, vheight - holedistance]) XM3Hole();
|
|
|
|
translate([vwidth - holedistance, 0, vheight - holedistance]) XM3Hole();
|
2021-01-04 18:08:21 +00:00
|
|
|
|
|
|
|
if (horizontalcenterholes) {
|
|
|
|
// center holes
|
|
|
|
translate([vwidth - holedistance, 0, vheight / 2]) XM3Hole();
|
|
|
|
translate([holedistance, 0, vheight / 2]) XM3Hole();
|
2020-12-30 21:47:25 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
module XM3Hole() {
|
2021-01-04 18:08:21 +00:00
|
|
|
rotate([270, 0, 0])cylinder(h = thickness, d = M4HoleDiam);
|
2020-12-30 21:47:25 +00:00
|
|
|
}
|