Mit dem openSCAD code
$fn = 100;
eps = 0.01;
b = 1.85;
l = 27.7;
h = 8;
tip_len = 3.5;
// profil/keway parameters
d1 = 2.2;
g1 = 0.8;
d2 = 2.7;
g2 = 2.9;
d3 = 2.6;
g3 = 5.9;
// head
translate([0,-10+h+0.2,-10])cube([b,10,10]);
//keycode
c1 = 4;
c2 = 2;
c3 = 5;
c4 = 6;
c5 = 7;
// spacing
sp = 4.1;
// start of bitting
begin = 4.5;
// depth steps
d = 0.5;
// scaling factor for bitting angle (larger = more open)
s = 3;
difference(){
translate([0,0,0])cube([b,h,l]);
// profil
translate([b,h-d1/2-g1,0])cylinder(r = d1/2,h=l+eps);
translate([0,h-d2/2-g2,0])cylinder(r=d2/2,h=l+eps);
translate([b,h-d3/2-g3,0])cylinder(r = d3 /2,h=l+eps);
// bitting
a1 = [[-sqrt(s)*c1*d,0],[0,c1*d],[sqrt(s)*c1*d,0]];
translate([0,0,begin])rotate([0,90,0])linear_extrude(b) polygon(a1);
a2 = [[-sqrt(s)*c2*d,0],[0,c2*d],[sqrt(s)*c2*d,0]];
translate([0,0,begin+sp])rotate([0,90,0])linear_extrude(b) polygon(a2);
a3 = [[-sqrt(s)*c3*d,0],[0,c3*d],[sqrt(s)*c3*d,0]];
translate([0,0,begin+2*sp])rotate([0,90,0])linear_extrude(b) polygon(a3);
a4 = [[-sqrt(s)*c4*d,0],[0,c4*d],[sqrt(s)*c4*d,0]];
translate([0,0,begin+3*sp])rotate([0,90,0])linear_extrude(b) polygon(a4);
a5 = [[-sqrt(s)*c5*d,0],[0,c5*d],[sqrt(s)*c5*d,0]];
translate([0,0,begin+4*sp])rotate([0,90,0])linear_extrude(b) polygon(a5);
// tip
translate([0,0,l-tip_len-1])rotate([50,0,0])cube([b,10,10]);
translate([0,h+0,l-tip_len])mirror([0,1,0])rotate([50,0,0])cube([b,5,5]);
};
