123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- lack_foot_width = 50;
- lack_foot_height = 100;
- lack_foot_dist = 5;
-
- bracket_height = 70;
- bracket_width = 40;
- bracket_wall = 10;
-
- screw_head_length = 4.5;
- screw_head_dia_max = 8.0;
- screw_head_dia_min = 3.2;
- screw_body_dia = 2.4;
- screw_body_length = 25;
-
- $fn = 20;
-
- module screw() {
- cylinder(d1 = screw_body_dia, d2 = screw_head_dia_min, h = screw_body_length + 0.1);
- translate([0, 0, screw_body_length])
- cylinder(d1 = screw_head_dia_min, d2 = screw_head_dia_max, h = screw_head_length);
- }
-
- module screw_block() {
- translate([bracket_width / 3, screw_body_length + screw_head_length - bracket_wall - 0.1, 10])
- rotate([90, 0, 0])
- screw();
-
- translate([bracket_width * 2 / 3, screw_body_length + screw_head_length - bracket_wall - 0.1, 20])
- rotate([90, 0, 0])
- screw();
- }
-
- module bracket_body() {
- translate([-bracket_wall, -bracket_wall, 0])
- cube([bracket_width + bracket_wall, bracket_wall, bracket_height]);
-
- translate([-bracket_wall, 0, 0])
- cube([bracket_wall, bracket_width, bracket_height]);
- }
-
- module bracket() {
- difference() {
- bracket_body();
-
- screw_block();
- translate([0, 0, bracket_height / 2 + lack_foot_dist])
- screw_block();
-
- translate([0, bracket_width, 0])
- rotate([0, 0, -90])
- screw_block();
-
- translate([0, bracket_width, bracket_height / 2 + lack_foot_dist])
- rotate([0, 0, -90])
- screw_block();
- }
- }
-
- // feet visualization
- %translate([0, 0, -lack_foot_height])
- cube([lack_foot_width, lack_foot_width, lack_foot_height]);
- translate([0, 0, lack_foot_dist])
- %cube([lack_foot_width, lack_foot_width, lack_foot_height]);
-
- translate([0, 0, (lack_foot_dist - bracket_height) / 2])
- bracket();
|