Seit ich vor ungefähr 12 Jahren mit dem 3D-Druck angefangen habe, träume ich davon, nicht nur planar, sondern auch non-planar und mit einer vierten oder fünften Achse drucken zu können.
Mich hat schon damals gestört, dass wir dreidimensionale Objekte zuerst in viele kleine horizontale Schichten zerlegen müssen, um sie anschliessend wieder zu einem dreidimensionalen Objekt zusammenzusetzen. Das funktioniert zwar ziemlich gut, hat aber auch einige Nachteile. Insbesondere die Anisotropie, also die unterschiedlichen Festigkeiten je nach Belastungsrichtung, und die zum Teil sehr aufwendigen Stützstrukturen haben mich immer wieder beschäftigt.
Mit zusätzlichen Achsen könnte man den Druckkopf oder das Druckbett neigen und drehen, um beispielsweise Überhänge ohne Support zu drucken, gekrümmten Oberflächen zu folgen oder Bauteile in unterschiedlichen Richtungen aufzubauen.
Ich habe über die Jahre viele wissenschaftliche Artikel zu diesen Themen gelesen und irgendwann sogar angefangen, einen eigenen 5-Achs-3D-Drucker zu konstruieren und zu bauen.
Nachdem ich die ersten drei Achsen fertiggestellt hatte, kam mir aber plötzlich in den Sinn, dass da ja noch etwas ziemlich Entscheidendes fehlt.
Der Slicer!
Was nützt mir ein Drucker mit fünf Achsen, wenn ich keine Software habe, die mir die entsprechenden Werkzeugbahnen berechnet?
Natürlich hätte ich die Maschine trotzdem fertig bauen und die Bewegungen manuell programmieren können. Aber eigentlich wollte ich ja nicht einfach nur einen Druckkopf um ein Bauteil herumfahren lassen, sondern tatsächlich beliebige 3D-Modelle mehrachsig drucken können.
Damals gab es meines Wissens keine frei verfügbare Software, die meinen Vorstellungen entsprach.
Also habe ich das Projekt unfertig auf Eis gelegt und mich anderen Projekten gewidmet.
Ein paar Jahre später
Vor ungefähr drei Jahren bin ich dann wieder auf ein wissenschaftliches Paper gestossen, das sich mit dem Slicen in mehreren Dimensionen beschäftigte.
Die Autoren hatten sogar eine Software dazu geschrieben und diese auf GitHub veröffentlicht.
Natürlich musste ich das gleich ausprobieren!
Ich habe also den Quellcode heruntergeladen und versucht, die Software zu installieren. Leider ohne Erfolg. Nach einigen Versuchen habe ich mir die GitHub-Issues angeschaut und festgestellt, dass ich offenbar nicht der Einzige war, der daran gescheitert ist.
Schade, denn das Verfahren sah wirklich vielversprechend aus.
So verschwand das Thema erneut für einige Jahre aus meinem Fokus.
Vibe Coding und alte Ideen
Vor ungefähr zwei bis drei Monaten habe ich angefangen, mit Hilfe von KI eigene Software zu entwickeln, die ich schon lange gerne gehabt hätte.
Zuerst habe ich mich daran gemacht, einen eigenen Ersatz für Adobe Lightroom und Photoshop zu programmieren. Das war noch bevor ich das ArtCraft-Projekt entdeckte.
Anschliessend habe ich mir Gedanken darüber gemacht, welche Software ich sonst noch so gebrauchen könnte, und habe mit der Entwicklung eines eigenen CAD-Programms begonnen. Bis ich auf SolidCraft stiess.
Irgendwann kam mir dann wieder mein alter 5-Achs-3D-Drucker in den Sinn.
Eigentlich wäre es ja viel interessanter, endlich einen Slicer zu entwickeln, der nicht nur die üblichen drei Achsen unterstützt, sondern auch unterschiedliche Verfahren für den non-planaren und mehrachsigen 3D-Druck beherrscht.
Damit könnte ich mein vor vielen Jahren angefangenes Druckerprojekt vielleicht tatsächlich noch fertigstellen.
Also habe ich angefangen, einen eigenen Slicer zu entwickeln.
Und weil ich sowieso schon dabei war, wollte ich nicht einfach einen kleinen experimentellen Slicer bauen, der nur ein einziges Verfahren unterstützt, sondern gleich eine vollständige Slicing-Software, die auch mit den etablierten Programmen mithalten kann.
multiAxisSlicer
Nun, hier ist er, der multiAxisSlicer.
Ein in Rust entwickelter Slicer für FDM-Drucker mit drei bis sechs Achsen, der zumindest bisher in der Theorie erstaunlich überzeugend funktioniert.
Die Software besteht aus einer normalen planaren Slicing-Engine, die funktional ungefähr das Niveau von OrcaSlicer erreichen soll, und verschiedenen zusätzlichen Verfahren für den nicht-planaren und mehrachsigen Druck.
Der planare Slicer unterstützt unter anderem Arachne-Wände mit variablen Linienbreiten, klassische und baumartige Stützstrukturen, verschiedene Infill-Muster, mehrere Druckplatten und Werkzeuge zum Aufmalen von Support und Nähten. Auch Text-Prägungen und boolesche Mesh-Operationen gehören zum Funktionsumfang.
Damit soll multiAxisSlicer auch für ganz normale 3-Achs-Drucker brauchbar sein.
Interessant wird es aber natürlich bei den zusätzlichen Slicing-Verfahren.
Nicht-planarer und mehrachsiger 3D-Druck
Aktuell habe ich verschiedene Verfahren integriert, die zum Teil auf wissenschaftlichen Arbeiten basieren und unterschiedliche Ansätze verfolgen.

Konisches Slicing
Das konische Slicing basiert unter anderem auf den Arbeiten zum RotBot der ZHAW.
Anstatt ein Objekt in horizontale Schichten zu zerlegen, werden konische Schichten erzeugt. Dazu muss das Bauteil beziehungsweise der Druckkopf entsprechend geneigt oder gedreht werden können.
Zusätzlich gibt es eine Variante, bei der die Kegel aus der Mitte heraus wachsen.
S³-Slicer
Beim S³-Verfahren werden gekrümmte Schichten berechnet, deren Verlauf sich an der Geometrie des Bauteils orientiert.
Dabei können unter anderem Überhänge, die Festigkeit und die Oberflächenqualität berücksichtigt werden.
Ich finde diesen Ansatz besonders interessant, weil man damit nicht einfach nur die Druckrichtung verändert, sondern auch Einfluss auf den Verlauf der einzelnen Materialbahnen nehmen kann.
CurviSlicer
CurviSlicer verfolgt einen etwas anderen Ansatz und erzeugt leicht gekrümmte Schichten, die auch mit normalen 3-Achs-Druckern gedruckt werden können.
Dazu wird die Geometrie entsprechend angepasst, sodass die Werkzeugbahnen trotz der gekrümmten Schichten mit den drei linearen Achsen ausführbar bleiben.
Das könnte insbesondere für Bauteile interessant sein, bei denen man die Schichtorientierung verbessern möchte, ohne gleich den ganzen Drucker umbauen zu müssen.
Nicht-planare Deckflächen
Eine weitere Funktion sind nicht-planare Deckflächen.
Wer schon einmal eine leicht gewölbte Oberfläche mit einem FDM-Drucker gedruckt hat, kennt die typischen Treppenstufen, die durch die einzelnen Layer entstehen.
Wenn man die obersten Schichten stattdessen entlang der tatsächlichen Oberfläche druckt, könnte man diese Stufen deutlich reduzieren.
Dazu muss der Druckkopf der dreidimensionalen Kontur folgen, was unter anderem eine Kollisionsprüfung notwendig macht.
Multidirektionaler planarer Druck
Dieses Verfahren finde ich persönlich eines der spannendsten.
Hier wird ein Bauteil durch verschiedene Schnittebenen in mehrere Bereiche aufgeteilt, die anschliessend jeweils in einer anderen Richtung gedruckt werden können.
Stellt euch beispielsweise eine Figur vor, die einen Arm seitlich ausstreckt.
Normalerweise müsste man den Arm mit Stützstrukturen aufbauen, da die Layer horizontal verlaufen.
Mit einem Kipp-Dreh-Tisch könnte man die Figur nach dem Druck des Körpers entsprechend drehen und den Arm anschliessend in einer anderen Richtung drucken.

Die Schnittebenen lassen sich im multiAxisSlicer manuell platzieren, automatisch berechnen oder in ihrer Grösse begrenzen.
Letzteres ist besonders praktisch, wenn man beispielsweise nur einen Arm schneiden möchte, ohne dass die Schnittebene auch durch den restlichen Körper verläuft.
Das Ganze ist natürlich etwas komplizierter, als es sich hier anhört, da die einzelnen Bereiche in der richtigen Reihenfolge gedruckt werden müssen und die Maschine dabei nicht mit dem bereits gedruckten Bauteil kollidieren darf.
Kollisionsprüfung und Simulation
Bei einem normalen 3D-Drucker sind die möglichen Bewegungen des Druckkopfs relativ einfach zu berechnen. Bei einer Maschine mit vier, fünf oder sechs Achsen wird das Ganze deutlich komplizierter.
Insbesondere bei Druckern mit Kipp-Dreh-Tischen muss man berücksichtigen, dass sich nicht nur der Druckkopf, sondern auch das bereits gedruckte Bauteil im Raum bewegt.
Darum habe ich verschiedene Prüfungen integriert.
Vor dem G-Code-Export wird kontrolliert, ob Werkzeug und Maschine mit dem Bauteil kollidieren könnten, ob Material ohne ausreichende Unterstützung in die Luft extrudiert würde und ob die benötigten Bewegungen innerhalb der mechanischen Achsgrenzen liegen.
Zusätzlich gibt es eine Maschinenansicht, in der man den gesamten Druckvorgang mit den Bewegungen des Druckkopfs und des Kipp-Dreh-Tisches simulieren kann.
Das ist gerade bei den multidirektionalen Verfahren hilfreich, um zu sehen, ob die berechneten Werkzeugbahnen überhaupt sinnvoll ausführbar sind.
Der G-Code kann in verschiedenen Dialekten ausgegeben werden. Darunter auch Varianten mit indexierten Drehachsen, wie sie beispielsweise der Fractal 5 Pro verwendet.
Desktop-App, Browser und Kommandozeile
multiAxisSlicer ist so aufgebaut, dass die eigentliche Slicing-Engine unabhängig von der Benutzeroberfläche verwendet werden kann.
Es gibt eine Desktop-App mit einer 3D-Ansicht, in der sich Modelle und Schnittebenen mit Gizmos verschieben und drehen lassen. Zusätzlich stehen eine Kommandozeile und eine Browser-Konsole zur Verfügung.
Vorbereitete Druckplatten können inklusive der Einstellungen als .masetup-Datei gespeichert und später wieder geöffnet werden.
Der Quellcode steht unter der AGPL-3.0-Lizenz. Die verwendeten und adaptierten Algorithmen sind mit ihren Quellen in der NOTICE.md dokumentiert.
Veröffentlicht habe ich das Projekt allerdings noch nicht, da ich zuerst einige Testmodelle aus dem Repository entfernen oder ersetzen muss, die ich nicht einfach weitergeben darf.
Funktioniert das wirklich?
Nun, das ist eine gute Frage. 😉
Bisher habe ich die verschiedenen Verfahren hauptsächlich in der Software getestet. Die generierten Werkzeugbahnen sehen in der Simulation gut aus, die Maschinenbewegungen werden berechnet und es lässt sich entsprechender G-Code erzeugen.
Das bedeutet aber noch lange nicht, dass sich damit auch tatsächlich brauchbare Bauteile drucken lassen.
Gerade bei den nicht-planaren Verfahren gibt es viele Dinge, die sich erst in der Praxis zeigen werden. Beispielsweise, ob die berechneten Abstände zur Oberfläche stimmen, wie sich das geschmolzene Filament bei unterschiedlichen Druckrichtungen verhält oder ob die Maschine sämtliche Bewegungen auch wirklich sauber ausführen kann.
Ich gehe deshalb davon aus, dass ich bei den ersten Druckversuchen noch auf das eine oder andere Problem stossen werde.
Aber immerhin habe ich nun endlich eine Software, mit der ich solche Versuche überhaupt durchführen kann.
Jetzt fehlt eigentlich nur noch der Drucker
Womit ich wieder bei meinem ursprünglichen Projekt angekommen wäre.
Ich habe aktuell zwei Möglichkeiten.
Entweder baue ich einen alten Ultimaker 2 Extended+ um, den ich noch hier stehen habe, oder ich mache mich daran, meinen damaligen Eigenbau fertigzustellen.
Als Elektronik habe ich bereits ein BIGTREETECH Octopus Pro, auf dem ich Marlin verwenden könnte. Wobei ich noch überprüfen muss, wie gut sich die benötigten zusätzlichen Achsen und deren Bewegungen damit tatsächlich umsetzen lassen.
Auch das Modul für die vierte und fünfte Achse, ein Kipp-Dreh-Tisch, liegt schon bereit.
Eigentlich fehlt also gar nicht mehr so viel.
Wobei ich das vermutlich vor zwölf Jahren auch schon gedacht habe. 😉
Ich werde mich nun wohl zuerst entscheiden müssen, welche Maschine ich umbauen möchte, und anschliessend die ersten praktischen Versuche mit den verschiedenen Slicing-Verfahren starten.
Besonders gespannt bin ich auf das konische Slicing und den multidirektionalen Druck, da sich damit einige meiner ursprünglichen Ideen endlich ausprobieren lassen sollten.
Vielleicht schaffe ich es ja tatsächlich noch, meinen vor ungefähr zwölf Jahren angefangenen 5-Achs-Drucker fertigzustellen.
Und falls das Ganze nicht funktioniert, habe ich zumindest wieder einmal ziemlich viel über 3D-Druck, Geometrie und Softwareentwicklung gelernt.
Ich werde berichten. 😉

Ben hat das mechanische Handwerk von der Pieke auf in der Werkstatt erlernt und anschliessend als technischer Kaufmann. Danach arbeitete er ein paar Jahre als Datenbank-Programmierer.
Dann absolvierte er ein Studium als Maschinenbautechniker.
Und nun hat ein paar CAS Weiterbildungen im Bereich Data Science absolviert
Heute entwickelt er Sondermaschinen für ein Sondermaschinenbau Unternehmen in der Schweiz.
2014 gründete er das FabLab Winterthur in der Schweiz.
Seine Hobbies sind seine Freundin, neue Dinge zu erfinden, neue Gadgets zu testen, das FabLab Winti, 3d-Drucken, geocachen, Unihockey spielen, ab und zu fotografieren (www.belichtet.ch) und Mountain Biken.