--- /dev/null
+include <yenyalib.scad>
+
+sirka 17.8
+vyska 9.5
+
+body_w = 15;
+base_w = 30;
+step1_h = 50;
+step1_w = 20;
+step1_off = 40;
+
+step2_h = 25;
+step2_w = 15;
+step2_off = 40;
+
+step23_plus = 7;
+
+step3_h = -step2_h;
+step3_w = 10;
+step3_off = 40;
+
+clip_wall = 1.5;
+alu_w = 24 + 0.5;
+alu_h = 8;
+clip_end = 1;
+
+module clip() {
+ difference() {
+ cube([alu_w + 2*clip_wall, alu_h + clip_wall, body_w]);
+ translate([clip_wall, clip_wall, -eps])
+ cube([alu_w, alu_h + eps, body_w + 2*eps]);
+ }
+ translate([clip_wall, alu_h + clip_wall - clip_end, 0])
+ cylinder(r = clip_end, h = body_w, $fn = 4);
+ translate([clip_wall + alu_w, alu_h + clip_wall - clip_end, 0])
+ cylinder(r = clip_end, h = body_w, $fn = 4);
+}
+
+module body() {
+ // cube to prevent rounded bottom
+ Ty(-10) cube([base_w, 10, body_w]);
+ // step 1
+ hull () {
+ cube([base_w, eps, body_w]);
+ translate([step1_off, step1_h, 0])
+ cube([step1_w, eps, body_w]);
+ }
+
+ // step 2
+ translate([step1_off, step1_h, 0]) hull() {
+ cube([step1_w, eps, body_w]);
+ translate([step2_off, step2_h, 0])
+ cube([step2_w, eps, body_w]);
+ }
+
+ // under the top corner
+ translate([step1_off + step2_off, step1_h + step2_h - step23_plus, 0])
+ cube([step2_w, step23_plus, body_w]);
+ // step 3
+ translate([step1_off + step2_off, step1_h + step2_h, 0]) hull() {
+ cube([step2_w, eps, body_w]);
+ translate([step3_off, step3_h, 0])
+ cube([step3_w, eps, body_w]);
+ }
+}
+
+screw_d1 = 3.5;
+screw_wall = 3;
+screw_d2 = 9;
+screw_off = 10;
+
+difference() {
+ round_with() {
+ union() {
+ Mz() cylinder(r1 = 1, r2 = 0, h = 2);
+ }
+ body();
+ }
+ // cut bottom
+ translate([-infty/2, -infty, -infty/2]) cube(infty);
+ translate([screw_off, -eps, body_w/2])
+ Rx(-90)
+ cylinder(r = screw_d1/2, h = screw_wall + 2*eps, $fn = 6);
+ translate([screw_off, screw_wall, body_w/2])
+ Rx(-90)
+ cylinder(r = screw_d2/2, h = step1_h, $fn = 6);
+}
+
+ // upper clip
+ translate([step1_off + step2_off + step2_w/2-alu_w/2-clip_wall,
+ step1_h + step2_h - clip_wall, 0])
+ clip();
+
+ // lower clip
+ translate([step1_off+step2_off+step3_off+step3_w/2-alu_w/2-clip_wall,
+ step1_h + step2_h + step3_h + clip_wall, 0])
+ Sy(-1) clip();
+