Samstag, 3. Januar 2015

Beschriftungen mit OpenSCAD

"Hat vielleicht einer von Euch eine Ahnung, wie ich auf das STL File einen Schriftzug drauf bekomme?" So begann eine Mail vor zwei Tagen an die Mailingliste des OpenLab Augsburg. Es sollte auf einer Tasse eine Beschriftung ergänzt werden:


Wenn es eine perfekte Welt gäbe, würde man die Quelldatei dieser Tasse in sein Lieblings-3D-Programm laden, das Textwerkzeug aktivieren und einfach loslegen. In der Wirklichkeit liegt meist keine Quelldatei vor, oder wie in diesem Fall im Solidworks-Format. Solidworks ist kommerzielle Software in einem Preissegment, welches hier nicht zur Verfügung steht - deshalb ist diese Datei hier ziemlich nutzlos.

Bleibt die .STL Datei. Mein Lieblings-3D-Programm ist OpenSCAD. Damit kann man .STL Dateien importieren und manipulieren. Was die Textfähigkeiten betrifft, da gibt es mehrere Möglichkeiten:
  • benutzen einer Text- / Fontbibliothek
  • benutzen einer aktuellen Entwicklerversion (ich verwende hier die Version 2014.09.05 bzw. 2014.12.30)
  • beides kombinieren
Wie man grundsätzlich einen Text auf ein Objekt draufbekommt, habe ich im letzten August schon einmal anwenden müssen. Als Mitbringsel wollte ich zwei Flaschenöffner mit den Namen der Beschenkten drucken.


In diesem Fall wurde die Bibliothek More_Fontz verwendet. Damit kann man aus einer Sammlung von über 500 Fonts aus der Google Web Font Sammlung wählen und Texte in OpenSCAD in die dritte Dimension bringen. Die Anweisungen

include <more_fontz\Aclonica.scad>;
fontscale=.11;

scale([fontscale,fontscale,fontscale])
  Aclonica("Karlheinz", 

     steps = 2,
     center = true, 
     extra = 10, 
     height = 90);



erzeugen dann dieses Textobjekt:

Da der Flaschenöffner an der zu beschreibenden Stelle eine Rundung hat, erzeugt man erst die Schnittmenge aus der Schrift und dem Öffner und erhält das hier:


Dieser Schriftzug ist genauso gerundet wie der Öffner. Nun braucht man ihn nur nuch um ca. 1mm versetzt auf den Öffner platzieren:

Dieser Trick klappt natürlich nur dann, wenn das Objekt nicht zu sehr gekrümmt ist. Versuche, die Tasse damit zu beschriften scheitern, wenn man größere Buchstaben möchte und/oder wenn man große Teile des Umfangs beschreiben will. Auch die kürzlich in OpenSCAD eingebaute text() Funktion alleine kann das nicht. Allerdings werden lokale Fonts des Betriebssystems benutzt. So muss man nicht extra eine große Fontsammlung mitschleppen.

Die Lösung für gekrümmte Oberflächen liefert die Bibliothek text_on. Schon in den Beispielen sieht man die vielfältigen Möglichkeiten. Die obige Tasse ist im wesentlichen ein Kegelstumpf der dem Beispiel rechts entspricht:
  • Man bindet die Bibliothek ein
    use <text_on.scad>

  • Lädt, dreht und positioniert die Tasse
    rotate([0,0,0])
    translate([-55,-72,-23])
    import("Coffee_Cup.STL", center=true);

  • Schreibt und positioniert den Text auf einen gleichartig geformten Kegelstumpf (unten ⌀70mm, oben ⌀109mm, Höhe 96mm)
    tanslate([0,0,0])
    rotate([0,0,180])
    text_on_cylinder(t="Markus", r1=71/2, r2=109/2, h=96,
                     font="Courier New:style=Bold",
                     direction="ltr", size=30, updown=0,
                     eastwest=-80, extrusion_height=5);
  • Leider ist die Bibliothek nicht in der Lage, den Text mittels halign="center" zu zentrieren. Da muß man ein wenig mit dem eastwest Parameter spielen, bis es passt. 
In der Praxis erweist sich diese Bibliothek auch noch als viel schneller und genauer in der Vorschau als More_Fontz. Wenn man alles richtig gemacht hat, sollte man in etwa das hier im Vorschaufenster sehen:

Zufällig hat der Anfragende auch noch ein kleines Problem mit seinem Drucker. Er hat mich gebeten die Tasse zu drucken. Die 17MB .gcode Datei hat mein Drucker heute früh um 08:50 bekommen. Nach etwas über 10h war er fertig. Es waren 17m Filament nötig. Es wurden 42g Filament in Faberdashery's Firetruck Red verdruckt:



Hier sieht man sehr schön, was passiert, wenn man "in die Luft" druckt. Die Unterkannten der Buchstaben sind Überhänge. Die sind generell schwierig zu drucken. Normalerweise braucht man dafür Stützmaterial. Ich bin aber ziemlich sicher, dass ein paar Hübe mit einer Feile ebenso zu einem brauchbaren Ergebnis führen.















1 Kommentar:

  1. Stefan, merci nochmals für's aushelfen. an meinem Hotend bin ich schon wieder dran ... irgendwann is das auch wieder einsatzfähig :-)

    AntwortenLöschen