--- /dev/null
+eps = 0.01;
+infty = 200;
+
+blade_w = 3.0;
+blade_h = 32;
+blade_l = 200;
+slot_l = 40;
+
+slot_angle_y = -15;
+slot_angle_z = -10;
+
+wall = 1.5;
+clip_wall = 3.0;
+clip_h = 15;
+clip_rear = 20;
+clip_in = 3.5; // inner width
+
+clip_l_top = 65;
+
+module slanted_knife() {
+ rotate([90, slot_angle_y, slot_angle_z])
+ translate([-blade_w/2, -eps, wall])
+ cube([blade_w, blade_l+2*eps, blade_h]);
+}
+
+module slanted_knife_slot() {
+ difference() {
+ translate([0, 0, -wall])
+ rotate([90, slot_angle_y, slot_angle_z])
+ translate([-wall-blade_w/2, 0, 0])
+ cube([blade_w+2*wall, slot_l, blade_h + 2*wall]);
+/*
+ rotate([0, 0, slot_angle_z])
+ translate([0, -infty/2, -infty/2])
+ cube(infty);
+*/
+ }
+}
+
+module body() {
+ for (x = [0:20:60]) translate([-x, 30, 0])
+ slanted_knife_slot();
+
+ // main clip stem
+ translate([-75, 0, 0])
+ cube([75+clip_l_top, clip_wall, clip_h]);
+
+ // rear support
+ translate([-44+clip_wall, -15, 0])
+ cube([clip_wall, 15, clip_h]);
+
+ // horizontal clip part
+ translate([clip_l_top-clip_wall, -clip_wall-clip_in, 0])
+ cube([clip_wall, clip_in+2*clip_wall, clip_h]);
+
+ // rear clip part
+ translate([clip_l_top-clip_rear, -clip_wall-clip_in, 0])
+ cube([clip_rear, clip_wall, clip_h]);
+}
+
+module main() {
+ difference() {
+ body();
+
+ // z-negative plane
+ translate([-infty/2, -infty/2, -infty])
+ cube(infty);
+
+ for (x = [0:20:60]) translate([-x, 30, 0])
+ slanted_knife();
+ }
+}
+
+main();
+