--- /dev/null
+eps = 0.01;
+infty = 100;
+
+width = 30;
+depth = 10;
+hole_d = 3.5;
+wall_angle = 40;
+hole_angle = 10;
+hole_wall = 2;
+wall = 1;
+front_h = 0.5;
+
+difference() {
+ hull() {
+ translate([-width/2, 0, 0])
+ rotate([hole_angle, 0, 0])
+ cube([width, eps, front_h]);
+ intersection() {
+ translate([0, depth, 0])
+ rotate([hole_angle, 0, 0])
+ translate([0, 0, -infty/2])
+ cylinder(r = hole_d/2 + hole_wall, h = infty);
+ translate([-infty/2, -infty/2, 0]) cube(infty); // z > 0
+ translate([0, 0, wall])
+ rotate([-90+wall_angle, 0, 0])
+ translate([-infty/2, 0, 0]) cube(infty); // upper side
+ }
+ }
+ // screw hole
+ translate([0, depth, 0])
+ rotate([hole_angle, 0, 0])
+ translate([0, 0, -infty/2])
+ cylinder(r = hole_d/2, h = infty);
+}
+
+