Tutorial: 3DLabPrint Modelle mit Cura slicen

Hallo liebe 3D Druck Gemeinde im RC-Network!

Ich bin normalerweise stiller Mitleser der nur in den seltensten Fällen einen Kommentar schreibt. Heute ist es jedoch an der Zeit einmal etwas zum Wissens-Schatz beizutragen.

Wer ein Wenig mit der Materie vertraut ist weiß, dass 3DLabPrint Flugmodelle etwas speziell hinsichtlich ihrer Herstellung sind. Der Hersteller selbst empfiehlt Simplify 3D zur Herstellung des G-Codes aus den STL-Dateien. Der Slicer ermöglicht auch eine Menge toller Features und ist eine gute Ergänzung für jeden, der sich etwas tiefer mit FDM Druck beschäftigen möchte, jedoch kostet er auch dementsprechend viel Geld, dass so mancher Drucker bereits billiger zu haben ist. Ich befasse mich seit Dezember 2016 mit 3D Druck und stieg damals mit einem BQ Hephestos (Prusa Klon) ein. Seit Beginn verwende ich Cura als Slicer und bin damit recht zufrieden. Mittlerweile ist der Drucker auch soweit modifiziert, dass ich zum Teil recht ansehnliche Drucke zustande bringe. Aus Folge reinen Übermutes hab ich dann die Bf109F/H gekauft und mich aufs Dünnschichtdrucken eingelassen. Anhand einiger Videos auf Youtube habe ich die Druckparameter im Slicer auf die Flugmodelle eingestellt.
Die zur Verfügung gestellten G-Code Dateien wollte ich nicht verwenden, da mir die Sache zu unflexibel erschien und ich meine Druckteile eigenhändig positionieren wollte. Natürlich war diese Arbeit nicht innerhalb von 2-3 Iterationen erledigt. Sie erzeugte vielmehr eine Menge Stirnrunzeln und Frustration, aber auch jede Menge Aha-Momente. Nach einigen Metern Filament war es dann soweit und ich hielt das erste brauchbare Druckteil in der Hand. Allerdings hatte die Sache einen großen Makel. Das Teil war durchgängig einschichtig gedruckt, d.h. Eine Außenwand besitzt die Dicke von einer Düsenbreite (0.4mm). In den Printingguides sieht man jedoch, dass die ersten Schichten mit zwei Wandschichten gedruckt werden sollen, um eine höhere Stabilität an den Klebestellen zu erzielen. Dieses Feature kann man bei Cura leider so nicht einstellen. Auch konnte ich kein Plugin für das gute Programm finden, das mir diese Einstellung ermöglichen würde. Als Konsequenz blieben mir zwei Optionen. Die Teile weiterhin mit einer Düsenbreite drucken und mit dem Stabilitätsminus leben, oder alles mit zwei Wandstärken drucken, also alles fast doppelt so schwer. Nach etwas Überlegen ergab sich dann doch noch eine dritte Option. Den G-Code von Hand modifizieren, was ich euch anhand dieses kurzen Beispiels demonstrieren möchte:
Startpunkt ist Cura 3.0.3 mit den gewünschten Bauteilen auf der Druckplatte. Die Druckeinstellungen sind für den Dünnschichtdruck optimiert und ein leichtes Grinsen im Gesicht.:) Ich benötige zwei G-Codes, die sich in der Wandstärke unterscheiden. Der Eine besitzt 2 Wall Layers, der Andere nur eine. Der gelernte Cura Anwender kennt die Einstellung dafür im Slicermenü unter dem Reiter „Shell“, Punkt „Wall Line Count“ (Bild). Wir speichern uns beide G-Codes an einen Ort, den wir wiederfinden. Damit kann es mit der G-Code-Modifikation auch schon losgehen.
 

Anhänge

  • Cura1.png
    Cura1.png
    232 KB · Aufrufe: 254
Die G-Code Dateien kann man in einem Texteditor öffnen, betrachten, modifizieren und speichern. Windows besitzt z.B. einen Standard Texteditor namens „Editor“ (welch Wunder). Darin öffnen wir den G-Code des 2-wandigen Modells. Was wir zu sehen bekommen ist so ähnlich wie im Bild dargestellt. Eine Menge Zahlen/Buchstaben-Kombinationen, dazwischen immer wieder einmal etwas Lesbares. Der Text enthält, alle Anweisungen, die der Drucker Schritt für Schritt abarbeitet. Zu Beginn ist z.B. der Startcode, der befiehlt Heizbett und Extruder zu wärmen, sowie einmal alle Achsen zum Endstopp zu fahren usw.. Anschließend wird gedruckt. Wir drücken jetzt „Strg+F“, damit erscheint das Suchfenster im Editor. In diesem Beispiel wollen wir bis einschließlich Layer 15 doppelwandig drucken und anschließend mit einer Wand weitermachen. Daher suchen wir im Suchfenster nach „layer:16“ was uns zum Ende des G-Codes von Layer 15 bringen sollte.
 

Anhänge

  • Editor2.png
    Editor2.png
    131,7 KB · Aufrufe: 167
An der Stelle Angekommen, eröffnet sich uns ein Bild ähnlich wie in der Abbildung angefügt. Wir sehen die Notiz wo Layer 16 beginnt, den letzten Druckschritt, sowie den Retract-Befehl „G1 F2100 E1205.62772“. Der Zahlenwert hinter E gibt die Position des Extrudermotors an. Diese wird zu Beginn des Druckes auf „Null“ gesetzt und anschließend tickt er nachBefehl los. In diesem Fall sind wir bei Schritt E 1205.62772. Der Aufmerksame Leser wird im grün markierten Druckschritt bereits eine höhere E-Zahl erkennen. Nachdem im Retract Material zurückgezogen wird, ist die E-Zahl im Retract-Schritt natürlich auch wieder kleiner. Das nur so als Randbemerkung. Wir markieren den Text von Anfang des G-Codes bis zur markierten Position vor „layer:16“. Das funktioniert am leichtesten indem man den Cursor (blinkender Strich) am gewünschten Endpunkt platziert, danach zum G-Code Beginn scrollt, Shift drückt und gleichzeitig an den Start klickt. Danach auf „Kopieren“ gehen oder „Strg + C“ drücken. Damit befinden sich die ersten 15 Layer in der Zwischenablage.
 

Anhänge

  • Editor3.png
    Editor3.png
    204,3 KB · Aufrufe: 124
Wir öffnen nun den 1-wandigen G-Code in einem 2. Editor Fenster. Anschließend ersetzen wir die ersten 15 Layer von diesem, durch den Inhalt der Zwischenablage. Was wir erhalten sieht so ähnlich wie im angehängten Bild aus. Zur besseren Übersicht ist eine leere Zeile zwischen Layer 15 und 16 eingefügt. Theoretisch besitzen wir nun bereits den gewünschten G-Code, welcher 15 Schichten zwei-wandig und die darauf folgenden ein-wandig druckt. Jedoch sollte man sich hüten, diesen G-Code bereits für einen Druckauftrag zu verwenden. Der Code enthält noch einen Fehler, der gerne zum Verstopfen des Hotends führt. Betrachtet man die Extrudersteps, so fällt auf, dass er nach dem letzten Retract von Layer 15 zu einem viel kleineren Wert im Prim des darauffolgenden Layers fährt, was bedeutet, dass das Filament langsam aus dem Hotend gezogen wird. Denkt man ein wenig darüber nach, ist klar warum dieses Verhalten entsteht. Der 2-wandige G-Code verbraucht viel mehr Material. Material wird dosiert indem dem Extrudermotor gesagt wird, „Dreh dich bis Position #“. Wir haben einen G-Code Teil des mehr-Material-brauchenden 2-wandigen Codes vor den äquivalenten Layer des 1-wandigen G-Codes kopiert. Der hätte bis zu dieser Stelle viel weniger Material verbraucht. Abhilfe lässt sich schaffen indem wir den Retract und den „Extruderstatus“ anpassen.
 

Anhänge

  • Editor4.png
    Editor4.png
    208,5 KB · Aufrufe: 148
Wir notieren uns für diesen Fall folgende wichtige Werte, die wir zum Anpassen benötigen:
E1207.42772: letzte Extrudermotorposition bis zu der Material extrudiert wurde.
E1205.62772: Extruderposition nach letzten Retract auf Layer 15.
E634.28143: Extruder Primebefehl zu einem viel zu niedrigen Wert.
Weiters benötigen wir folgenden Befehl:“G92 E“ er erlaubt uns dem Drucker zu sagen, dass der Extrudermotor sich auf der gewünschten Position befindet.
Wir ersetzen nun also den Extrudermotorwert im ersten Primebefehl von Layer 16 mit r letzten Extrudermotorposition bei der Material extrudiert wurde. Sollten wir mehr oder weniger Material zum Primen verwenden (Extra Prime Amount in den Retract Einstellungen) so muss man dies hier mit einberechnen!
Danach folgt der G92 E Befehl, mit dem Prime-Wert des 1-wandigen G-Codes. Somit ist für den Drucker der Extrudermotor per Definition auf der passenden Position und es kann weiter gedruckt werden.
Abschließend speichern und den Drucker starten.

Natürlich ist dieses Verfahren nicht nur auf den Übergang zwischen Layer 15 und 16 beschränkt. Wieviele Layer man schließlich 2-fach ausführt obliegt jeden selbst. Weiters könnte man ein Script programmieren, welches die beiden Ausgangsdateien automatisch an der gewünschten Stelle zusammenführt. Meine Programmierkarriere habe ich jedoch 2007 während des Studiums beendet. Daher wird es von meiner Seite in diese Richtung leider nichts geben.

Ich hoffe ich kann mit diesem Tutorial dem Einen oder Anderen das Slicen von 3DLabPrint Modellen mittels Cura in ansprechenderer Qualität ermöglichen.

Beste Grüße
Patrik
 

Anhänge

  • Editor5.png
    Editor5.png
    206,1 KB · Aufrufe: 150
Script...

Script...

Weiters könnte man ein Script programmieren, welches die beiden Ausgangsdateien automatisch an der gewünschten Stelle zusammenführt.
...

ja, wenn vergleichbare Fragestellungen auftauchen, dann kommt man auf ähnliche Lösungswege :) :)

So testet - wer mag - mal das Script, was ich vor ein paar Tagen geschrieben habe.

Ein halbwegs aktuelles Python sollte installiert sein, dann bei der txt-Datei die txt-Endung entfernen (ich weiß nicht, wie ich die .py-Datei ohne Änderung ins Forum hochladen kann).
Konsole öffnen und dann mit "python layer_d.py xxx datei" starten. xxx ist der Layer, ab dem die zweite Datei zum Einsatz kommt.
"python layer_d.py -h" schreibt nochmal eine kleine Hilfe...

Wer Fehler findet, darf dies gerne mitteilen; ich bin noch ncht dazu gekommen, alles auf Herz und Nieren zu prüfen...

Jan
 

Anhänge

  • layer_d.py.txt
    2,4 KB · Aufrufe: 109
Sehr schön. Herzlichen Dank für Deine Mühe.
Ich werde einmal versuchen, ob ich damit klar komme.
Will mir die Edge drucken.

Gruß Chapter
 
Schicke Sache das!

Es kommt ja erstaunlich häufig (nicht nur bei 3DLabPrint, wo eine variable Wandstärke dem Anwender grundsätzlich ja auch Vorteile bringt) vor, dass S3D-Funktionen "missbraucht" werden, um die Konstruktion zu vereinfachen. Beim Das Liddle Stik von AeroFred z.B. sollen in der Schnauze nur die ersten paar Millimeter mit Infill gedruckt werden, der dann die Funktion eines Brandschotts erfüllt. Diese Hürde kann man in Cura (oder anderen Slicern) mit exakt den gleichen Mitteln überwinden.

Wenn es jetzt noch jemand schaffen würde, eine entsprechende Funktion in die Post-Processing-Scripts von Cura (Menü Extensions->Post Processing->Modify G-Code; das sind ebenfalls Python-Scripts, die in der Ordnerstruktur des Programms leicht aufzuspüren sind) zu integrieren, wäre das die Krönung... :)
Ich befürchte allerdings, dass das nicht funktionieren wird, weil ich mir kaum vorstellen kann, dass man den Scripts beibringen kann, auf variable externe Quelldateien zurückzugreifen (inklusive dem dafür nötigen UI-Dialog). Bin eh programmierblöd - aber vielleicht könnte jemand mit mehr Überblick mal sein Glück versuchen...?

Tschöö
Stephan
 
PS: Was mir gerade noch einfällt: Das hier...

Der Code enthält noch einen Fehler, der gerne zum Verstopfen des Hotends führt. Betrachtet man die Extrudersteps, so fällt auf, dass er nach dem letzten Retract von Layer 15 zu einem viel kleineren Wert im Prim des darauffolgenden Layers fährt, was bedeutet, dass das Filament langsam aus dem Hotend gezogen wird.

...könnte man ja einfach mit relativen statt absoluten Extrusionswerten vermeiden. Die Einstellung auf relative Werte findet sich in Cura unter "Special Modes" (muss ggf. erst sichtbar geschaltet werden). Damit könnte man sich den G92 und eventuell damit verbundene Eingabefehler sparen.

Tschöö
Stephan
 
PS: Was mir gerade noch einfällt: Das hier...



...könnte man ja einfach mit relativen statt absoluten Extrusionswerten vermeiden. Die Einstellung auf relative Werte findet sich in Cura unter "Special Modes" (muss ggf. erst sichtbar geschaltet werden). Damit könnte man sich den G92 und eventuell damit verbundene Eingabefehler sparen.

Tschöö
Stephan

Stimmt Stephan, habe es eben in Cura ausprobiert.

Vor 4 Jahren habe ich mir aus nur einem Layer ganze Tragflächen zusammengebastelt.
Skeinforge hat derart ungleichmäßig geslict, dass ich mir den besten Layer rausgesucht habe und den dann kopiert.

Bin da ganz naiv dran gegangen. Hatte mich dann gewundert, dass der Extruder bei jedem Layer einen riesen Retract machte ;)
Danach passierte es, dass die Düse von ganz oben runter kam und durch die Dünnwand "düste".
Ich hatte beim Kopieren vergessen, beim letzten Layer die Z-Höhe zu ändern...

Das war bei 450 Layer eine riesige, fehlerträchtige Fleißarbeit.
Schließlich hat mir ein Freund dafür ein Script geschrieben. Dann ging's fast wie von selbst.
 
Danach passierte es, dass die Düse von ganz oben runter kam und durch die Dünnwand "düste".
Ich hatte beim Kopieren vergessen, beim letzten Layer die Z-Höhe zu ändern...

Aua. In der Serie "Die schönsten Abstürze" sicherlich mal ganz was anderes als immer nur diese ewig gleichen Flugplatzvideos.
Und du wunderst dich, dass viele lieber Trapezspindeln benutzen als M5-Gewindestangen? Denk doch nur mal an den Verschleiß... :p

(jaja... wer den Schaden hat...;))

Tschöö
Stephan
 
Ansicht hell / dunkel umschalten
Oben Unten