Als nächstes erstellen wir die Systemdefinition für das Medeco Biaxial in AutoKey3D:
Die Schlüssellänge hab ich von einem existierenden Schlüssel hier gemessen, manchmal wird er in Software auch angegeben. Könnte man allerdings auch schätzen, wichtig ist, dass er lange genug ist.
Code: Alles auswählen
// 0 or 1 for regular or control
kidx = 0;
// Shoulder
aspaces = [5.41, 6.99];
aspace = aspaces[kidx];
In der Software, aus der ich die Maße nehme, sind 2 Anschläge angegeben, vermutlich einer für den regulären Schlüssel und einer für den Control Key. Ich trag hier mal beide ein, wähle aber den ersten aus, also 5.41. Da der Anschlag bei AutoKey3D in der Regel nicht über das Profil hinausragt, dürfte der sowieso dann auch in die andere Richtung drehbar sein.
Der Abstand der Pins, kann man aus den Maßen errechnen, die in der Software angegeben sind. Alternativ kann man es auch am Zylinder abmessen.
Der tiefste Schnitt (also was die 0 in AutoKey3D ist). Da die Maße in der Bezugssoftware in Relation zum Rücken angegeben sind, ziehen wir es von der Schlüsselhöhe ab (Schlüsselhöhe = Profilhöhe - 2 x Toleranz).
Code: Alles auswählen
// Cut spacing
cutspace = 0.635; // Actually alternating between 0.63/0.64
Wie groß ist ein Höhensprung im System? Wenn man die Werte aus der Bezugssoftware nimmt, sieht man, dass die Differenz alterniert zwischen 0.63 und 0.64. Wir nehmen daher 0.635 damit es nicht zu größeren Abweichungen beim Aufaddieren kommt.
Der Schnittwinkel ist in meiner Bezugssoftware nicht angegeben (Hint: Falls irgendwer hier eine verwendet, die den Winkel oder andere Maße noch genauer kennt, nicht zögern und mich hier korrigieren). Ich hab den Winkel von einem existierenden Schlüssel abgenommen und ungefähr geschätzt.
Wir breit das Schnittplateau ist, der Wert ist in der Bezugssoftware angegeben.
Die Schlüsseldicke, gemessen von einem existierenden Schlüssel. Ihr werdet euch jetzt sicher fragen wofür wir das brauchen. Die Antwort ist, dass wir später die Cutter für die Schnitte über der Schlüsselmitte zentrieren müssen, bevor wir sie rotieren, weil die Drehachse ja genau die Mitte der Längsrichtung des Schlüssels ist. Normalerweise brauchen wir diese Angabe sonst nur bei Bohrmuldensystemen um die Cutter zu Nullen.
Jetzt haben wir schonmal alles, was wir sonst auch für reguläre Schlüssel bräuchten. Was fehlt ist ein Weg, die Rotation mit reinzubringen (Wem das zu kompliziert wird, kann nun einfach das nächste Post lesen
.) Dazu hab ich eine kleine Änderung an AutoKey3D vorgenommen und den Code für "reguläre" Schnitte in eine extra Datei ausgelagert, die wir hier includen können. Prinzipiell kann jede Definition ihre eigenes Modul
keycombcuts definieren und dort machen was sie will mit dem Schlüssel. Was wir machen wollen ist ja aber fast das gleiche wie für reguläre Schlüssel, nur mit ein bisschen drehen. Daher macht es Sinn, den bisherigen Code zu erweitern und einfach zu includen:
Und in
regularcut.scad kopieren wir den bisherigen Code für reguläre Schnitte, und ändern ihn wie folgt ab:
Code: Alles auswählen
module keycombcut(cutnum, cutlevel, lcut_mode=false, lcut1=false, lcut2=false) {
erweitern wir um 2 Parameter:
Code: Alles auswählen
module keycombcut(cutnum, cutlevel, lcut_mode=false, lcut1=false, lcut2=false, rot=0, xcorr=0) {
Der erste Parameter
rot ist die Rotation des Schnitts, der zweite Parameter
xcorr ist die X-Korrektur des Schnitts von der absoluten Mitte in Richtung Schlüssel. Also der Wert den wir benutzen wollen, um den Schnitt richtig über den Schlüssel zu zentrieren. Dann fügen wir zwei Statements ein, und zwar vor
Code: Alles auswählen
translate([0,0,platspace/2]) // Center the original plateau over the pin
hull() { ...
Dort wird der Cutter gebaut, wir ändern das wie folgt ab, um den Cutter erst zu drehen, dann richtig in X-Richtung zu zentrieren:
Code: Alles auswählen
translate([xcorr,0,0])
rotate([0,rot,0])
translate([0,0,platspace/2]) // Center the original plateau over the pin
hull() { ...
Jetzt haben wir also in unserem Code für reguläre Schnitte die Möglichkeit, die Rotation und X-Korrektur zu übergeben (pro Schnitt). Jetzt können wir zurück in unserer Definitionsdatei für das System einfach folgenden Code verwenden:
Code: Alles auswählen
module keycombcuts() {
for (i = [0:2:len(keycomb)-1]) {
keycombcut(i/2, keycomb[i], false, false, false, keycomb[i+1], kt/2);
}
}
Sieht kompliziert aus, ist es aber nicht:
Die Funktion geht die übergebene Kombination durch, und geht davon aus, dass die folgendes Format hat: Code,Rotation,Code,Rotation,Code,Rotation, ...
Wir gehen also in Zweierschritten über die Kombination, übergeben den ersten Teil als die übliche Kombination, den Teil der direkt folgt, als Rotation in Grad, und die Hälfte der Schlüsseldicke als X-Korrektur damit es auch zentriert ist. Schöner wäre es natürlich, wenn man es noch so baut, dass man anstatt den Gradzahlen einfach L, R und C angeben kann. Es gibt bei Medeco nur drei mögliche Drehrichtungen, wobei die Drehung nach Rechts bzw. Links eben 20° in die Richtung ist.
Fehlt uns noch das Profil, auf zum nächsten Post...