Das Modell ist ein Kettenoktopus: acht Arme aus je zehn Gliedern, alle beweglich, alle in einem Stück gedruckt. Jedes Glied hängt auf einem Querstab, und zwischen Glied und Stab liegt ein konstruiertes Spiel von 0,305 mm. Achtzig solcher Spiele, und keines darf verschweißen.
Hier steckt die Erkenntnis, die den ganzen Ansatz gedreht hat: der gedruckte Spalt ist immer genau eine Schichthöhe breit – vorausgesetzt, überhaupt eine Schnittebene fällt in das Spiel. Fällt keine hinein, gibt es keinen Spalt, und das Gelenk ist massiv.
Dünnere Schichten machen die Gelenke enger, nicht sicherer. Sicher ist nur, dass jedes der achtzig Spiele von mindestens einer Schnittebene getroffen wird – und das hängt an Schichthöhe und erster Schicht gemeinsam, weil die erste Schicht die Phase des ganzen Rasters verschiebt.
Das falsche Kriterium und seine Korrektur
Ich hatte zuerst das falsche Kriterium: Ich verlangte, dass ein ganzes Schichtband in das Spiel passt, und schloss daraus, dass bei 0,34 mm alle achtzig Gelenke verschweißen würden. Der Drucker sagte etwas anderes – ein Druck mit 0,34 war beweglich. Das Kriterium war zu streng: Es reicht, wenn die Ebene im Spiel liegt.
# tools/gapcheck.py — das richtige Kriterium
def resolved(a, b, h, first):
"""die bestplatzierte Schnittebene in (a, b)"""
best = None
cand = [first / 2.0]
n = 2
while True:
z = first + (n - 1.5) * h
if z >= b:
break
cand.append(z)
n += 1
for z in cand:
if a < z < b:
c = (z - a, b - z)
if best is None or min(c) > min(best):
best = c
return bestDamit wird aus einer Vermutung eine Prüfung. Das Skript rechnet alle 80 Gelenkspiele an den vierzig Querstäben für jede Kombination aus Schichthöhe und erster Schicht durch. Jede Zelle der Tabelle enthält zwei Werte:
- vorne: wie viele der 80 Spiele von keiner Schnittebene getroffen werden – diese Gelenke verschweißen. Eine 0 heißt: alle beweglich.
- hinten: die kleinste Reserve in mm – wie nah die knappste Schnittebene an der Kante ihres Spiels liegt. Je größer, desto mehr Toleranz bleibt für Ungenauigkeiten des Druckers.
| Schichthöhe | 1. Schicht 0,22 | 0,26 | 0,28 | 0,30 | 0,32 |
|---|---|---|---|---|---|
| 0,28 mm | 0 · 0,034 | 0 · 0,018 | 0 · 0,014 | 0 · 0,031 | 0 · 0,027 |
| 0,30 mm | 0 · 0,003 | 0 · 0,008 | 0 · 0,028 | 0 · 0,010 | 0 · 0,010 |
| 0,32 mm | 6 verschweißt | 0 · 0,014 | 6 verschweißt | 0 · 0,011 | 0 · 0,031 |
0,32 mm ist die schnellste brauchbare Schichthöhe – aber nur mit passender erster Schicht. Mit 0,22 oder 0,28 fallen sechs Querstäbe genau zwischen zwei Ebenen und werden massiv. Die Kombination 0,32 / 0,32 hat mit 0,031 mm dieselbe Reserve wie der vorherige Stand bei 0,28 / 0,22 – bei 14 % weniger Schichten.
Warum kein Brim möglich ist
Der naheliegende Reflex bei Haftungsproblemen ist ein Brim. Beim Kettenoktopus ist er ausgeschlossen, und das lässt sich beziffern: Zwischen zwei aufeinanderfolgenden Gliedern desselben Arms liegen auf dem Bett 1,01 mm. Bei vierzig solcher Paare.
Ein Brim würde diese vierzig Lücken überbrücken – und damit genau die Gelenke zusammenkleben, die beweglich bleiben sollen. Er würde die Haftung verbessern und das Objekt gleichzeitig zerstören. Zwischen benachbarten Armen sind es dagegen 6,11 mm; dort wäre er unproblematisch, aber dort hilft er auch nicht.
Öhrchen oder andere Opferflächen kamen ebenfalls nicht in Frage – das Modell soll ohne Nachbearbeitung vom Bett kommen. Blieb also nur, die Aufstandsfläche der Glieder selbst zu vergrößern.
Anzeige · Affiliate-Link – kaufst du darüber, erhalte ich ggf. eine Provision. Für dich ändert sich am Preis nichts.
Die Tonne wird zum Zelt
Jedes Kettenglied ist eine liegende Tonne. Eine liegende Tonne berührt das Bett auf einem schmalen Streifen – beim schwächsten Glied waren es 17,5 mm² bei 3,9 mm Breite. Das ist zu wenig für ein Teil, das darüber vierzig Millimeter hoch wird.
Der erste Reflex, die Unterseite tiefer abzuflachen, war schnell erschöpft: Der Parameter bed_flat lässt sich von 0,80 auf höchstens 0,92 anheben (+6 % Breite), danach frisst die Planung den Ring unter der Bohrung an – und dieser Ring trägt den Arm.
Die Lösung war, den Querschnitt in y zu strecken statt in z zu planen: unten breit aufliegend, mit geraden Flanken schräg hoch, oben weiter rund. Ein Zelt statt einer Tonne.
// Die Sohle, auf die die Tonne gehüllt wird. Ihre Kontur ist die
// EIGENE Bettberührung der Tonne, in y verbreitert – sie läuft also
// genau dort aus, wo die Tonne das Bett verlässt. Die Aufstandsfläche
// wird breiter, ohne einen Millimeter länger zu werden. Genau das
// schützt die 1,01 mm zum nächsten Glied.
function foot_half(d, u, s) =
let (zax = d/2 - bed_flat, r = barrel_r(d, u))
r > zax ? s*sqrt(r*r - zax*zax) : 0;
module barrel(len, d) {
// ...
if (arm_spread <= 1 + eps) core();
else hull() { core(); barrel_sole(len, d, arm_spread); }
}Schwächstes Glied, arm_spread 1,00 → 1,80:
| Größe | vorher | nachher | Faktor |
|---|---|---|---|
| Aufstandsfläche | 17,5 mm² | 35,1 mm² | 2,00× |
| Aufstandsbreite | 3,9 mm | 8,2 mm | 2,10× |
| Abstand im selben Arm | 1,01 mm | 1,01 mm | unverändert |
| Abstand zum Nachbararm | 6,11 mm | 6,11 mm | unverändert |
Weil die Streckung nur in y erfolgt, taucht die Tonne bei exakt demselben x unter das Bett – die Fläche wird breiter, nie länger. Die kritischen 1,01 mm bleiben unangetastet. Als Nebeneffekt verschwindet ein Überhang: Die untere Flanke einer liegenden Tonne wächst beim Steigen nach außen; gestreckt neigt sie sich nach innen.
Kippsicherheit skaliert mit dem Quadrat der Auflagebreite. Aus 2,1× Breite werden damit rund 4,4× Widerstand gegen das Abkippen.
Beim ersten Anlauf verlangte ich ein ganzes Schichtband im Gelenkspiel statt nur der Schnittebene. Das Ergebnis war eine saubere, überzeugende, falsche Tabelle – widerlegt durch einen bereits gedruckten, beweglichen Oktopus.
Die Rechnung war korrekt. Nur die Annahme darunter stimmte nicht, und das sieht man einer sauberen Tabelle nicht an.
Modell: parametrischer Kettenoktopus in OpenSCAD, Prüfwerkzeuge in Python. Drucker: HevORT, Klipper v0.13.0-743, 0,4-mm-Düse. Slicer: OrcaSlicer 2.4.2.
Geprüfte Modellkennwerte: Volumen 29,6 cm³, Bettkontakt gesamt 2262 mm², kleinste Einzelfläche 35,1 mm², Gelenkspiel 0,305 mm, dünnste Wand 1,39 mm, Überhanganteil 11,1 %.
Diese Serie
Ein Abend Fehlersuche an einem Kettenoktopus hat vier Themen ergeben, die sich unabhängig voneinander lesen lassen:
- Klipper Bed Mesh: fehlender Nullbezug kostet 0,14 mm
- Print-in-Place: Schichthöhe entscheidet über die Gelenke – dieser Artikel
- OrcaSlicer & Klipper: 34 % weniger Druckzeit (erscheint in Kürze)
- Sieben Fehlschlüsse bei der Klipper-Fehlersuche (erscheint in Kürze)
Anzeige · Affiliate-Link – kaufst du darüber, erhalte ich ggf. eine Provision. Für dich ändert sich am Preis nichts.