3D Konstruktion mit OpenSCAD – Verschieben und Kombinieren

In diesem Teil geht es um das bewegen, Drehen und Kombinieren von Objekten .

Zuerst erzeugen wir wieder einen Würfel. Das solltet ihr inzwischen können.

Der Würfel ist ja mit einer Ecke im Nullpunkt des Koordinatensystems platziert.  Wenn wir den Würfel aber an einer anderen Stelle benötigen, müssen wir ihn verschieben. Der dafür benötigte Befehl heißt “translate”. Er wird vor das zu verschiebende Objekt geschrieben und benötigt, genau wie ein Kubus drei Werte, je für X Y und Z Richtung. Das sieht also beispielsweise so aus:

translate([5,0,0])cube(10);

Das Ergebnis ist dann

ein um 5 mm entlang der X- Achse verschobener Würfel mit 10 mm Kantenlänge. So lange wie wir nur ein einziges Objekt haben, spielt es eigentlich keine Rolle, wo das Objekt platziert ist. Das ändert sich aber schlagartig, wenn man mehr als ein Objekt benötigt.

Wir erzeugen nun einen Würfel mit 10 mm Kantenlänge und eine Kugel mit 10 mm Durchmesser. Das sollte kein Problem sein, haben wir beides schon gemacht.  Um das aktuelle Problem besonders zu verdeutlichen, platzieren wir den Würfel Zentriert, also mit center=true als Parameter.

cube(10,true);
sphere(d=10, $fn=300);

Das Ergebnis ist zum einen erstaunlich, zum anderen aber auch nachvollziehbar:

Wir sehen nur den Würfel, von der Kugel fehlt jede Spur. Denkt man mal kurz darüber nach, ist schnell klar, die Kugel ist deswegen nicht zu sehen, weil sie vollständig im Inneren des Würfels liegt.

Hier kommt jetzt der translate Befehl zum Zuge. Wir bewegen die Kugel einfach um 10 mm entlang der Z Achse:

cube(10,true);
translate([0,0,10])sphere(d=10, $fn=300);

und schon taucht sie wie von Zauberhand auf und thront auf dem Würfel.

Man muss die Kugel natürlich nicht genau auf den Würfel setzen. Man kann sie darüber oder daneben platzieren oder auch partiell im Würfel versenken. Natürlich kann man auch den Würfel auf die Kugel setzen, wenn man möchte. Zur Verdeutlichung heben wir die Kugel mal nur um 5 mm an:

cube(10,true);
translate([0,0,5])sphere(d=10, $fn=300);

Das liefert dann dieses Ergebnis:

Und schon haben wir einen Buzzer konstruiert.

Bei einer Kugel spielt die Orientierung im Raum ja keine Rolle, bei einem Kubus aber durchaus. Um Objekte zu rotieren (englisch rotate) kommt, welch Wunder, der Befehl rotate zum Einsatz.  Die Syntax ist praktisch identisch zu translate, nur das man bei rotate eben die Rotation in° angibt

rotate([45,45,45])cube(10);

Ergibt:

Man kann sehen, das ich die Kugel aus kommentiert habe (also die Zeile mit // eingeleitet habe). Somit wird sie ignoriert und ich kann sie im nächsten Schritt schnell wieder einbauen, ohne alles neu tippen zu müssen…

Nun binden wir die Kugel wieder ein und platzieren sie genau auf die eine Ecke des Würfels. dafür braucht man ein wenig Geometrie- Kenntnisse aus der Schule. Schon mal was von PI gehört? Klar, da war doch was… Irgendwas mit Kreis und 3,14.. Also versuchen wir das einfach mal:

rotate([45,45,45])cube(10);
translate([-3.14,-3.14,-3.14])sphere(d=10, $fn=300);

Erstaunlicherweise kommt dabei das raus:

ich gebe ja zu, ich habe es vorher ausprobiert und deswegen die 10 mm Durchmesser gewählt. Bei 20 mm Durchmesser hätte ich -6,28 nehmen müssen, usw… Eine kurze Formel dafür wäre (d/10) * 3,14

So könnte man das Objekt aber nicht drucken, da sich Würfel und Kugel nur in einem einzigen winzigen Punkt berühren. Man müsste entweder die Verbindung durch zusätzliche Objekte, z.B. einen Zylinder verstärken oder man “versenkt” die Kugel teilweise im Würfel:

rotate([45,45,45])cube(10);
translate([-2.5,-2.5,-2.5])sphere(d=10, $fn=300);

Mit folgendem Ergebnis:

Nun ist die Verbindung zwischen Kugel und Würfel erheblich stabiler.

Eine weitere Operation muss ich noch behandeln, bevor wir tatsächlich anfangen können, etwas “Produktives” zu machen. Stellen wir uns mal vor, wir möchten gerne Löcher in der Grundplatte unserer Servo- Halterung haben, um sie leicht anschrauben zu können.

Also konstruieren wir zunächst die Grundplatte selbst. Sie soll in diesem Beispiel 65 mm lang und 30 mm breit sein, sowie 3 mm dick. Die Maße habe ich für ein Modelcraft RS-2 Servo, welche es vor Jahren mal bei Conrad im Angebot für 2€ das Stück gab, ausgewählt. Dazu benötigen wir was? Natürlich einen Kubus mit [65,30,3] als Parameter.

cube([65,30,3]);

Da unsere Platte nun über das Sichtfeld hinaus ragt, können bzw. müssen wir die Ansicht verschieben oder verkleinern. Das macht man mit der Maus. Je nach dem, ob man rechts oder links geklickt hält, verändert sich die Position und/oder Perspektive. Mit dem Mausrad kann man hinein oder hinaus zoomen.

Viele der Knöpfe unterhalb der 3D Ansicht dienen dazu, die Position bzw. Perspektive zu verändern.  Wenn ihr euch dabei völlig verheddert, keine Sorge. Dafür gibt es einen “Panik- Knopf” und zwar den Kreis mit dem Pfeil drin, der sechste Knopf von links. Wenn ihr da drauf klickt, wird die Ansicht wieder auf Normal eingestellt…

Ich habe in diesem Fall eine Ansicht ziemlich von Oben gewählt, weil uns das gleich beim Erzeugen der Löcher hilft.

Das ist also unsere Grundplatte. Nun müssen wir Löcher hinein bohren. Natürlich virtuell in 3D und nicht später real am fertig gedruckten Objekt (was theoretisch auch funktionieren würde).

Dazu verwenden wir nun Zylinder, die wir von der Grundplatte abziehen werden. Der Zylinder soll 3,2 mm Durchmesser haben damit 3 mm Schrauben problemlos durchpassen. Und er muss etwas höher sein, als die eigentliche Grundplatte, damit die Öffnung auch tatsächlich vollständig wird.

cylinder(h=5, d=3.2, $fn = 300);

Das fügen wir nun unserem “Programm” hinzu.

Diesen Zylinder werden wir später von der Grundplatte abziehen. Zunächst muss er aber erst mal an die richtige Stelle verschoben werden. In Z Richtung verschieben wir ihn um -1, damit er auch sicher komplett durch die Grundplatte ragt. Deswegen haben wir ihn ja 5 mm hoch und nicht 3 mm hoch gemacht. In X und Y Richtung verschieben wir ihn um 4 mm, also

translate([4,4,-1])cylinder(h=5, d=3.2, $fn = 300);

Nun ist der Zylinder richtig platziert:

Erinnert ein ganz klein wenig an Lego, oder? Jetzt müssen wir den Zylinder “nur” noch von der Grundplatte abziehen.

Dafür gibt es den Befehl “difference”. Da wir es hier mit einer Boolschen Operation zu tun haben, ist die Syntax etwas komplizierter als bei den bisherigen Beispielen.

Der difference Befehl muss vor den Objekten stehen, die voneinander abgezogen werden sollen. Außerdem müssen diese Objekte mit geschweiften Klammern eingefasst werden. Das erste Objekt ist das, von dem das andere  Objekt abgezogen wird. Da differnece keine eigenen Parameter hat, bleiben die () leer. Das Ganze sieht dann so aus:

difference() {
cube([65,30,3]);
translate([4,4,-1])cylinder(h=5, d=3.2, $fn = 300);
}

Und als Ergebnis erhalten wir das:

Somit haben wir eine Grundplatte mit einem schönen Schraubenloch darin.

Wir wollen aber nicht nur eine Schraube verwenden, sondern in jeder Ecke eine. Also erzeugen wir nicht nur einen Zylinder, sondern vier. Das kann man blitzschnell mit Kopieren und (dreimal) Einfügen erledigen. Danach muss man nur noch die Koordinaten entsprechend anpassen. Das erste “Loch” hatte jeweils 4 mm Abstand vom Nullpunkt. Das zweite Loch hat in Y Richtung 30 – 4 = 26 mm Abstand. 30 mm ist unsere Grundplatte breit. 4 mm soll der Abstand des Loches sein, also 30 -4 = 26 ist der Wert für die Verschiebung. In X Richtung muss die Verschiebung 65 -4 = 61 betragen. Das vierte Loch bekommt 61 und 26 mm Verschiebung…

difference() {
cube([65,30,3]);
translate([4,4,-1])cylinder(h=5, d=3.2, $fn = 300);
translate([4,26,-1])cylinder(h=5, d=3.2, $fn = 300);
translate([61,4,-1])cylinder(h=5, d=3.2, $fn = 300);
translate([61,26,-1])cylinder(h=5, d=3.2, $fn = 300);
}

Voila, unsere Grundplatte ist fertig:

Das ganze ist jetzt schon eine etwas komplexere Operation gewesen. Aber man gewöhnt sich da ganz schnell dran, finde ich.

Hiermit sind die Basics abgearbeitet und wir können im nächsten Teil ernsthaft anfangen, unseren Halter zu konstruieren. Das erfolgt dann im nächsten Abschnitt…

ZurückWeiter

 

3D Konstruktion mit OpenSCAD – Einfache Objekte

Im dritten Teil werden wir verschiedene Grundkörper erzeugen und verändern.

Den Würfel haben wir ja mit dem Befehl “cube” erzeugt. Cube kann aber mehr als Würfel erzeugen. Dazu müssen wir statt der Kantenlänge eben drei Werte, Länge, Breite und Höhe angeben…

cube([10,10,10]);

Die eckigen Klammern gruppieren zusammengehörende Werte. Sie dürfen auch nicht fehlen, da sonst ebenfalls nichts mehr geht. Die Werte oben ergeben einen Würfel mit 10 mm Kantenlänge. Das hatten wir doch schon… Ja, aber nun können wir statt einem Würfel einen Kubus mit unterschiedlichen Kantenlängen erzeugen. Dazu müssen wir nur einen oder mehrere der Werte in der eckigen Klammer verändern. Also z.B.

cube([20,10,10]);

Das ergibt einen Kubus von 20 x 10 x 10 mm Abmessungen.

Durch verschiedene Werte kann man ganz unterschiedliche Objekte erzeugen, ganz wie man sie braucht. Spielt mal ein wenig mit unterschiedlichen Werten herum, um eine Gefühl dafür zu bekommen. Falls ihr eine genauere Größenangabe als 1 mm benötigt, könnt ihr auch Nachkommastellen angeben. Allerdings darf dafür kein Komma, sondern wie im Angelsächsischen Raum üblich, muss ein Punkt verwendet werden.

cube([20,15,0.5]);

Sonst würde es ja ein Durcheinander mit den verschiedenen Achsen geben, die ja durch Kommata getrennt werden. Obige Werte ergeben eine Art Platte mit 0,5 mm Dicke und 20 x 15 mm Abmessungen.

Es gibt noch einige andere Grundkörper, die wir uns nun anschauen wollen. Andere Grundkörper benötigen natürlich auch andere Parameter als ein Kubus, der mit Länge, Breite und Höhe vollständig  beschrieben ist.

Das nächste Objekt was wir uns anschauen wollen, ist eine Kugel (englisch Sphere). Die benötigt  entweder den Durchmesser oder den Radius, um vollständig beschrieben zu sein. In OpenSCAD kann man beides verwenden, also r = 5 oder d = 10 liefert dasselbe Ergebnis.  Der genaue Befehl lautet also

sphere(d = 10);

und ergibt folgendes:

Was zum einen auffällt, ist das die Kugel mit dem Mittelpunkt auf dem Nullpunkt des Koordinatensystems liegt, wohingegen der Würfel mit eine Ecke auf dem Nullpunkt positioniert wurde.  Beim Würfel (und Zylinder) kann man das umstellen, sofern gewünscht. Dazu muss man hinter den Werten für die Abmessungen mit einem Komma getrennt “true” oder “center = true” einfügen.

Doch zurück zur Kugel. Wenn wir uns die Vorschau genauer anschauen, so sieht das eher wie eine 1970er Jahre Diskokugel aus als eine schöne glatte Kugel. Das liegt daran, das alle 3D Programme intern mit Dreiecken rechnen. Daraus lässt sich mit dem geringsten Aufwand fast jede Form erzeugen. Nur alles, was wirklich rund ist, erfordert extrem kleine und extrem viele “Dreiecke”, bis wir das als “echte” Rundung akzeptieren können. Da das aber viel Rechenaufwand viel Zeit und viel Speicherplatz bedeutet, kann man die “Glattheit” der Rundungen selbst festlegen. Je glatter das Objekt wird, desto mehr Dreiecke sind nötig. Bei einer Kugel gibt es deswegen zusätzliche Parameter, um die Oberfläche im Detail zu beeinflussen. Wir verwenden der Einfachheit halber vorrangig nur die “Auflösung”, welche mit $fn = xxx festgelegt wird. Also

sphere(d = 10, $fn = 300);

ergibt dann das:

So sieht die Kugel schon eher nach Kugel aus. Um mal eine Vorstellung vom Rechenaufwand zu bekommen. Die “Diskokugel” hat 18 tausendstel Sekunden für die Vorschau benötigt, die glattere Version immerhin schon 133 Tausendstel, also fast 8 mal so lange.  Je größer der Wert für $fn, desto glatter wird die Kugel, desto länger dauert das Rendern und desto größer wird die STL Datei. Aus Erfahrung heraus weiß ich, das Werte zwischen 100 und 300 gute Ergebnisse bei vertretbarem Aufwand bedeuten.

Neben Kugel und Kubus gibt es in OpenSCAD noch zwei weitere Grundkörper, Zylinder (englisch cylinder) und  Polyeder (Englisch polyhedron). Ein Polyeder kann wirklich jede beliebige Form annehmen und ist der universellste Grundkörper überhaupt. Leider ist er deswegen auch extrem kompliziert. Bisher hatte ich es noch nie nötig, mich damit zu beschäftigen. Womit wir uns hier aber unbedingt noch beschäftigen müssen, ist der Zylinder. Ein ebenfalls sehr nützlicher und vielseitiger Grundkörper.

Beim Zylinder benötigt man den Durchmesser (d) oder Radius (r), wie bei der Kugel. Zusätzlich muss man aber auch die Höhe (h) angeben:

cylinder(h=10, d=10);

Ergibt dann das:

Genau wie bei der Kugel können wir mit $fn die Seiten glätten.

cylinder(h=10, d=10, $fn = 300);

ergibt

Der Zylinder kann aber noch viel mehr. Man kann auch zwei verschiedene Radien bzw. Durchmesser angeben.

cylinder(h=10, d1=10, d2=0, $fn=300);

Damit bekommt man einen Kegel:

Man kann für d2 auch Werte größer als 0 verwenden,

cylinder(h=10, d1=10, d2=5, $fn=300);

das ergibt

Im Falle des Zylinders kann man mit der Glattheit $fn aber auch ganz andere Effekte erzielen, Wählen wir spaßeshalber mal 4 als Wert für $fn:

cylinder(h=10, d1=20, d2=0, $fn=4);

und schon haben wir…

eine Pyramide.

Das soll es mit den Grundkörpern gewesen sein. Ihr habt hoffentlich eine Einblick bekommen, was es alles so gibt. Im nächsten Kapitel werden wir die Körper verschieben und modifizieren lernen.

ZurückWeiter

3D Konstruktion mit OpenSCAD – Die Grundlagen

Hier geht es um die Grundlagen, um das GUI und die ersten einfachen Objekte.

Ich gehe davon aus, das OpenSCAD bereits installiert worden ist.  Also starten wir das Programm einfach mal:

Links ist der schon erwähnte Editor zu finden, in dem wir später unsere Modelle kreieren. Rechts ist oben die Vorschau unserer Konstruktion und darunter ein oder zwei Boxen, die Informationen anzeigen. Zum einen die Konsole, in der alle Ausgaben von OpenSCAD anzeigt und eventuell (kann man ein- und ausschalten) eine Fehlerbox, in der explizit Fehler aufgelistet werden. Mir reicht die Ausgabe in der Konsole, weswegen ich die Fehlerbox in der Regel ausblende. Das geht oben im Menü unter “Fenster”.

Oberhalb des Editors und unterhalb der 3D Ansicht gibt es je eine Menüleiste mit verschiedenen Knöpfen. Die werde ich dann erklären, wenn wir sie brauchen. Nun können wir beginnen, unser Objekt zu konstruieren. Aber halt, bevor wir anfangen, noch ein kleiner Exkurs zum Thema “Kommentare”. Ein Kommentar ist etwas, das es in jeder Programmier- oder Skript- Sprache gibt. Allerdings macht ein Kommentar absolut gar nichts. Alle Kommentare werden in allen Sprachen vollständig ignoriert. Also wozu gibt es sie überhaupt? Nun, das ist ganz einfach zu erklären. Kommentare dienen dazu, den Code leichter lesbar und für andere Leute verständlicher zu machen. Auf diese Art kann man also bestimmte Abschnitte mit einer Art “Überschrift” versehen oder auch z.B. Copyright- Notizen im Code verewigen. Außerdem kann man so bestimmte Bereiche vorübergehend deaktivieren, wenn man am Testen ist…  Kommentare werden bei OpenSCAD mit // eingeleitet.  Alles, was in einer Zeile nach einem Doppelslash // steht, wird einfach ignoriert.

Wir geben also eine Überschrift in den Editor ein:

// OpenSCAD Tutorial

und drücken anschließend die Enter Taste.  Nun gibt es eine zweite Zeile, was man an der 2 erkennen kann.

Jetzt werden wir  endlich unseren ersten Körper erzeugen. Machen wir z.B. mal einen Würfel mit exakt 10 mm Kantelänge. Das geht so:

cube(10);

cube ist der Befehl zum erzeugen eines Kubus. In den Klammern stehen die Maße und das Semikolon schließt den Befehl ab. Darauf muss man achten, denn wenn auch nur ein Semikolon am Ende fehlt (wird viel zu gerne vergessen, kann ich euch sagen), funktioniert gar nichts mehr.

Man kann sofort sehen, das unterschiedliche Farben für den Text verwendet werden. Das nennt sich “Syntax- Hervorhebung” und ist ein elementarer Bestandteil eine guten Editors. Auf diese Art kann man sofort sehen, um was es sich bei dem Code handelt. Türkis ist ein Kommentar, Blau ein Befehl und Rot ein Wert. Andere Editoren verwenden andere Farben, aber der Effekt ist stets derselbe. Man kann die einzelnen Teile leichter auseinander halten, was ungemein hilfreich ist.

Damit haben wir unseren Würfel erzeugt. Aber wir sehen noch gar nichts in der Vorschau. Dazu müssen wir die Vorschau aktualisieren. Das geschieht nicht automatisch, um nicht ständig Fehlermeldungen zu bekommen, während man noch am Tippen ist. Um das zu machen, muss man nur auf den “Vorschau” Knopf klicken.  Den gibt es sowohl oberhalb des Editors als auch unterhalb der 3D Ansicht. Es ist der Knopf mit dem >> und dem gestrichelten Würfel drauf, der Knopf ganz links unter der 3D Ansicht. Wenn euch die Funktion eines Knopfes nicht klar ist, einfach mal die Maus darüber fahren und einen Moment warten. Dann bekommt man eine kurze Erklärung. Falls es euch lieber ist, die Vorschau lässt sich auch durch die Taste F5 ausführen. Egal wie ausgelöst, der Effekt ist immer derselbe. Wir sehen endlich unser erstes Objekt.

Wir sehen nun in der 3D Ansicht eine Würfel mit exakt 10 mm Kantenlänge.

Apropos STL Export. Wenn wir wollen, können wir den Würfel jetzt schon als STL exportieren und ausdrucken. Vor dem Export muss das Objekt aber noch gerendert werden, denn die Vorschau ist nur eine grobe Skizze, nicht aber das fertige Objekt. Das geht mit dem Knopf direkt rechts neben dem Vorschau Knopf in beiden Menüleisten oder mit F6. Bei komplexen Objekten kann das durchaus mal eine Weile dauern, hier geht es aber genau so schnell wie die Vorschau. Auf meinem, nicht sehr starken PC dauert das Rendern genau 4/100 Sekunden…

Das Rendern ist erledigt und wir exportieren spaßeshalber den Würfel mal als STL Datei, wie man sie zum Drucken benötigt.

Dazu klicken wir auf den Export Knopf. Das ist der, auf dem STL steht und der sich in der Menüzeile über dem Editor direkt rechts neben dem Rendern Knopf befindet. Nun können wir einen Namen und den Speicherort für unsere STL Datei festlegen. Ich habe die Datei unter “Würfel_10” abgespeichert. Diese STL Datei können wir direkt in unser Slicer Programm (ist immer beim 3D Drucker dabei)  einlesen. Bei meinem Elegoo Mars ist das Programm Chitubox dabei. Bei eurem Drucker könnte auch ein ganz anderes Programm dabei sein. Die Aufgaben dieser Programme sind aber eigentlich immer dieselben.

Das war es dann auch schon. Wir haben ein 3D Objekt erstellt, welches man direkt ausdrucken oder zu einem Dienstleister senden kann.

Eigentlich könnten wir jetzt aufhören, oder?  Spaß beiseite, das war erst der Anfang. Aber zumindest haben wir den kompletten Prozess einmal durchgespielt…

In der Zeit, die ich brauche, um in FreeCAD die passende Workbench auszuwählen, habe ich in OpenSCAD den Würfel schon im 3D Drucker…

Das zu lesen dauert 1000 mal länger als es zu machen, von daher…

Im nächsten Teil geht es dann um das verändern der verschiedenen Grundkörper.

ZurückWeiter

3D Konstruktion mit OpenSCAD – Einführung

Heute möchte ich euch einen kleinen Schnupperkurs in 3D Konstruktion mit dem Open Source Tool OpenSCAD geben. Ich bin selbst auch noch keine Leuchte, aber vielleicht ist gerade das ein Vorteil. Für jemand, der tagtäglich mit einem Programm arbeitet ist es oft sehr schwer, Probleme zu sehen, die ein Einsteiger vielleicht haben könnte. Da ich selbst noch Einsteiger bin, stolpere ich bestimmt über alle denkbaren und auch einige undenkbare Fallstricke…

Es gibt sehr viele Tools, um 3D Objekte am PC zu konstruieren. Von fast schon “kindertauglichen” Geschichten wie Tinkercad bis hin zu Hochprofessionellen Tools wie AutoCAD oder Solidworks. Darunter sind auch einige, die man, zumindest als Privatperson, kostenlos nutzen kann. Das trifft z.B. auf FreeCAD oder Fusion 360 zu, Auch OpenSCAD gehört als OpenSource Software natürlich zu den kostenlosen Programmen. Im Gegensatz etwa zu Fusion 360 darf man OpenSCAD auch im professionellen Umfeld kostenlos verwenden, wenn man mag.

Was unterscheidet OpenSCAD von dem wesentlich bekannteren FreeCAD? Nun, in FreeCAD hat man ein aufwändiges GUI in dem man auf unzähligen “Workbenches” unglaublich viele komplizierte Sachen machen kann. Die meisten anderen Tools, auch die Professionellen, sind da ganz ähnlich gestrickt.

OpenSCAD ist einfach anders und dadurch zumindest für mich viel einfacher und leichter zu verstehen. In OpenSCAD gibt es zwar auch ein GUI, das dient aber vorrangig dazu die eigene Arbeit ansehen zu können. Das eigentliche Konstruieren geschieht in einem Text Editor. Ein entsprechender Editor ist eingebaut. Man kann aber auch extern, z.B. mit Notepad++ arbeiten. Mir hat der interne Editor bisher immer gereicht. Auch hier erschafft man sein Modell aus Grundkörpern, die skaliert, verschoben, addiert, subtrahiert,…. werden. Das Grundprinzip ist in vielen derartigen Programmen ganz ähnlich. Allerdings werden die Manipulationen an den Körpern in der GUI und nicht in Formeln durchgeführt. Mir behagt das klare Tippen von exakten Positionen und Abmessungen einfach mehr, als etwa ein Körper mit der Maus so zu verändern, wie ich ihn benötige. OpenSCAD ist so eine Art Programmieren, aber mit wenigen, leicht zu verstehenden Befehlen und Funktionen.

Da man wie in “richtigen” Programmiersprachen auch mit Variablen arbeiten kann, hat OpenSCAD ein Alleinstellungsmerkmal, die freie Parametrierbarkeit. Nicht umsonst sind nahezu alle parametrierbaren Designs auf Thingiverse mit OpenSCAD hergestellt worden. Was bedeutet diese freie Paramtrierbarkeit nun genau?. Dazu werden wir in unserem ersten Beispiel eines Servo- Halters für verschiedene RC Servos  noch mal genauer anschauen. Für jetzt so viel… Man legt am Anfang einige Variablen fest und weist ihnen Werte zu. Sagen wir mal:

$l = 7;

Wenn wir nun irgendwo in unserem “Programm” nun $l (für Länge) einfügen wird hier immer der Wert 7 genutzt, wie wir es festgelegt haben. Durch dieses Definieren am Anfang kann man nur durch anpassen dieses einen Wertes das Objekt in ganz unterschiedlichen Größen und Formen erstellen.

Im Baubericht über meine Drehscheibe habe ich ein Adapter für den Stepper Motor vorgestellt. Dieser Adapter ist ebenfalls parametrierbar, um ihn an unterschiedliche Höhen und Durchmesser anpassen zu können, ohne jedes Mal das ganze Teil neu konstruieren zu müssen.

Da ich sonst in AutoIt programmiere und hier alle Variablen ein $ vorangestellt haben müssen, habe ich mir auch in OpenSCAD angewöhnt, eine Variable mit dem vorangestellten $ zu kennzeichnen. Das ist bei OpenSCAD nicht nötig. Man kann hier die Variablen völlig frei benennen, ganz nach eigenem Geschmack. Also eben auch mit einem voran gestellten $…  Das erhöht die Übersicht, zumindest für mich…

Für unser erstes Übungsobjekt, einen Halter für RC Servos zum Weichen schalten, Tore öffnen, Signale stellen usw… ist die Parametrierbarkeit schon fast zwingend. Schließlich gibt es Dutzende von verschiedenen Größen für RC Servos. Und selten kommt man mit nur einer Größe aus. Wenn wir nun von vorne herein ein Auge darauf haben, müssen wir nur noch, wenn uns eine neue Servo- Größe unter kommt, die Abmessungen in den Anfang unseres Designs übertragen und der Halter sollte sofort wieder passen.

Doch bevor wir unseren Servo Halter konstruieren, müssen wir einige ganz elementare Basics lernen. Das lässt sich leider nicht vermeiden. Auf der nächsten Seite stelle ich zuerst die GUI von OpenSCAD vor und zeige den Umgang mit Grundkörpern.

Weiter

Zuckerrohr Lore Teil 2

Erstens kommt es anders und zweitens als man denkt…. Irgendwie stehen alle meine Eigen- Konstruktionspläne unter keinem guten Stern. Nachdem ich angefangen habe, die Zuckerrohr Lore aus Holz zu lasern, habe ich entdecken müssen, das sich diese Arbeit schon jemand vor mir gemacht hat.  Auf Thingiverse gibt es ein 3D Modell einer Zuckerrohr Lore in 0n30 frei zum Download und ausdrucken. Auch wenn in der Titelzeile H0n30 steht, ist die Lore definitiv in 0n30 konstruiert. Dasselbe Schicksal hat auch mein C 50 Projekt ereilt. Auch diese Lok gibt es auf Thingiverse in 1:45 kostenlos zum Download… Dazu später mehr im entsprechenden Beitrag,

Die Lore kann ich mit meinem Elegoo Mars in einem Durchgang gleich zweimal drucken. Das spart eine Menge Zeit.

Die Kosten für das Harz liegen pro Lore bei gut 1€ (der Display Verschleiß ist dabei schon einkalkuliert). Und das, obwohl ich aus schlechten Erfahrungen der letzten Zeit gelernt habe, lieber zu viel als zu wenig Stützen einzuplanen.

Das Fahrwerk ist ein einzelnes Druckteil, der Käfig wird aus 4 Teilen montiert.

Bei so reichhaltigem Support macht das Versäubern etwas Arbeit. Dafür sind die Teile nicht so wellig, dort wo das Modell gestützt werden muss…

Nach dem Versäubern und Aushärten ging die Suche nach passenden Radsätzen los.  Leider passen die bei mir in großer Zahl vorhandenen Roco H0 Radsätze auch hier nicht. Im Gegensatz zu den Five79 Bausätzen (für die die Roco Achsen zu kurz sind) sind hier die Achsen aber zu lang. Es passen aber Radsätze von Fleischmann und auch Märklin Hamo, die einen knappen Millimeter kürzere Achsen haben. Nur habe ich davon bei weitem nicht so viele, leider…

Der MT Wagen dient zur Höhenjustage der Kupplung und als Größenvergleich.  Nachdem ich passende Radsätze hatte, musste ich noch passende Kupplungen auftreiben. Eine mögliche Variante wäre es, eine Kadee NEM Kupplung von unten gegen den Rahmen zu kleben/schrauben. Die NEM Köpfe haben eine Feder zur Mittel- Justage bereits integriert. Das wäre eine zumindest halbwegs funktionierende Lösung gewesen.

Die Loren haben einen Schlitz, in den ein 3D Druck Teil als “Feldbahn- Kupplung” eingesetzt werden kann. Zufällig ist dieser Schlitz exakt in der passenden Höhe, Dicke , Breite und Tiefe um direkt eine “Whisker” Kupplung (Kadee #118) aufzunehmen. Nun muss man nur noch eine Schraube von Unten eindrehen, um die Kupplung zu befestigen. Das ist die bessere und auch preisewertere Lösung denn die NEM Kupplungen kosten etwas mehr bzw. sie gibt es nicht in Großpackungen. Eine Lore kommt so komplett auf 5 bis 6€ incl. Radsätzen, Kupplungen, Kleber und Lack. Muss man sie drucken lassen, wird es natürlich deutlich teurer, weil kein Dienstleister rein für die Materialkosten arbeitet, arbeiten kann…

Zum Komplettieren der Lore benötigt man neben dem eigentlichen 3D Druck zwei H0 Radsätze, zwei Kupplungen passend zum eigenen System, etwas Kleber und Lack sowie ein wenig Fliegengitter- Stoff, am besten in Schwarz. Diesen Stoff gibt es für ganz kleines Geld im 1€ Shop und er eignet sich neben der Bespannung dieser Loren auch als Maschendrahtzaun und ähnliches. In aller Regel hat man ein paar Reststücke übrig, wenn man seine Fenster vor den lästigen Plagegeistern schützt. Also nicht wegwerfen, sondern weiter verwerten, ganz im Sinne des Nachhaltigkeitsgedankens…

Im Vergleich zu dem MT Personenwagen ist die Lore doch recht winzig. Die Breite ist aber so, das es gut zueinander passt. Das Fahrwerk kann man auch für andere Flach- oder Kasten- Loren verwenden… Dazu kann man leicht aus etwas Balsaholz einen Boden und ggfs. Seitenwände “schnitzen”.

Jetzt mus sich erst noch eine Lösung für das Ladegut finden. Wachsendes Zuckerrohr werde ich auf meiner Anlage mit Gras- Teppichen für Outdoor Gebrauch simulieren. Aber geschnittenes Zuckerrohr sieht doch anders aus.  Das werde ich nun eine Weile dran grübeln. Die Ladung will ich vor der Endmontage und dem Lackieren zumindest vorbereitet haben. Sonst müsste ich einen Holz- Boden einbauen, wie er für leere Loren auf jeden Fall nötig wäre..

Noch mal ein Foto mit der Porter, die besser zu den Loren passt als der vergleichsweise riesige MT Personenwagen…

Da ich zufällig ein schönes Reststück Furnierholz gefunden habe, werde ich den Loren doch allen einen Echtholz- Boden spendieren. So kann ich mich auch später noch um das Ladegut kümmern, wenn mir irgendwann dann doch mal was dazu einfällt.

Um zu entscheiden, wie ich die Maserung laufen haben möchte, habe ich einen Boden in Längs- und einen in Quer- Richtung ausgeschnitten und verglichen.

Der Sieger ist eindeutig die Quer- Richtung… Also noch einen zweiten Boden ausgeschnitten, bevor die Käfige auf die Fahrwerke geklebt werden.

Das dünne Furnier für den Boden ist ziemlich wellig. Das wird sich legen, wenn es später mit dem Fahrzeug verklebt worden ist.

Das Zusammenkleben ist etwas fummelig, da es keine Rastnasen oder Ähnliches gibt und die Teile stumpf aneinander geklebt werden müssen. Dazu lässt sich das Harz nicht mit Kunststoffkleber, auch nicht mit Ruderer verkleben. Es funktioniert nur Sekundenkleber, was die ganze Sache nicht erleichtert. Zusätzlich ist mir auch gerade noch der Gel Kleber ausgegangen, der für solche Arbeiten erheblich besser geeignet ist, als der dünnflüssige “normale” Sekundenkleber.

Nichtsdestotrotz  habe ich die beiden Loren  zusammen gebaut bekommen.

Das ist doch ein niedliches Züglein, oder?

Als nächstes will ich noch 2 x 2 Loren ausdrucken sowie Sekundenkleber Gel und Fleischmann Radsätze organisieren. Die Märklin Hamo Radsätze passen zwar rein, da die Achsen aber 24,4 mm lang sind, laufen sie nicht so leicht wie die 24,0 mm Fleischmann Achsen. Mit den Fleischmann Radsätzen laufen sie wirklich gut. Deswegen gibt es einen kompletten Satz 10,4 mm Räder mit 24,0 mm Achsen für meine 6 geplanten bzw. existierenden Loren.

Was ich noch nicht gemessen habe, ist das Gewicht. Allerdings erschienen sie mir nicht zu leicht, von daher… Zur Not kann man ja immer noch Ballast unter den Fahrwerken bzw. unter dem Ladegut anbringen. Allerdings denke ich erst mal nicht, dass das nötig sein wird.

Das Finish mache ich erst, wenn alle 6 Loren so weit sind, um alle auf einmal lackieren zu können. Die Option später noch mehr von diesen Loren herzustellen, steht mir ja jederzeit offen. 3D Druckdaten werden nicht schlecht, verbrauchen keinen Platz und nutzen sich auch nicht ab. Ein Resin Drucker wird auch in Zukunft fest zu meinem Werkzeugpark gehören. Es sei denn, es gibt demnächst etwas noch Besseres in einem vergleichbaren Preisrahmen.

Kleiner Nachtrag. Inzwischen habe ich alle 6 Loren der ersten Auflage  ausgedruckt und mit neuen Radsätzen von modellbahn-radsatz.de ausgerüstet. Zum lackieren bin ich aber noch nicht gekommen, also sind die Loren weiterhin nur in Grau zu “bewundern”. Hier auf meinem “Fiddle- Gleis” mit der 0-4-2 Porter von Bachmann als Zugpferd.

Wirkt durchaus “karibisch”. Auch die Bachmann Shay macht sich ganz gut vor den Loren, obwohl ich sie vorrangig im Touristen- Verkehr einsetzen will, da die Shay eine echte Attraktion für Bahn- Fans ist.

Wenn mir das Ganze mal zu exotisch wird, könnte ich die Loren problemlos auch ins mitteleuropäische Hochmoor verlegen. Eine Jung Feldbahnlok davor und das ganze Karibik- Flair ist dahin… Nun ist es ein “langweiliger” Torfzug…

Irgendwann die Tage muss ich dann doch mal lackieren, damit die Loren fertig montiert werden können…

Fortsetzung folgt.

3D Resin Drucker Elegoo Mars

Da sich durch die Corona Kriese bedingt meine persönlichen Ausgaben deutlich reduziert haben, konnte ich mir schneller als gedacht einen Elegoo Mars 3D Drucker anschaffen. Die 3D Drucker, die mit durch UV- Licht aushärtenden Harzen arbeiten, erreichen allgemein eine sehr hohe Druckqualität, kein Vergleich mit herkömmlichen FDM Druckern. Der Elegoo Mars ist ein kleiner, kompakter Resin Drucker, der mit die günstigste Variante so eines Resin Druckers überhaupt darstellt. Bei Amazon, dem Haupt- Vertriebsweg von Elegoo kostet er aktuell 239€. Trotzdem zählt er von den Druckergebnissen her zum Besten, was man im Heim- Bereich überhaupt für Geld bekommen kann. Hier ist billig ausnahmsweise mal kein Grund, Abstriche bei der Qualität zu machen.

Der Drucker wird fast komplett montiert geliefert. Lediglich das Druckbett muss man selbst anbringen. Das ist aber mit einer Hand- Schraube erledigt und muss im Betrieb sowieso ständig gemacht werden. Denn am Druckbett hängen ja kopfüber die gedruckten Objekte.

Beim ersten Montieren muss man das Druckbett noch nivellieren. Dazu wird der Resin Tank entfernt, ein Blatt Papier auf das UV Display gelegt und der Kugelkopf am Druckbett mit Hilfe von 2 Inbusschrauben gelockert. Nun lässt man den Drucker auf die Nullposition fahren. Der Drucker erkennt selbsttätig, wann er unten anstößt. Nun übt man leichten Druck auf das Druckbett aus und zieht die beiden Inbusschrauben wieder fest. Das wars. Kein Vergleich mit der elenden Fummelei beim FDM Drucker…

Der Elegoo Mars ist kompakt und ziemlich solide gebaut. Meistens aus Metall, was man wirklich spürt. Er macht jedenfalls einen sehr soliden Eindruck.

Ich habe mich von Anfang an dazu entschieden, nur Wasser- waschbares Harz zu verwenden. Das erspart einem zwar nicht die Sauerei mit dem Waschen der Objekte, aber man muss nicht auch noch mit Unmengen von Isopropylalkohol hantieren. Das Waschwasser gieße ich zuerst durch einen (nur dafür verwendeten) Kaffeefilter, womit die gröbsten Teile schon mal ausgefiltert sind und in den Restmüll entsorgt werden können. Das vorgefilterte Waschwasser sammele ich in einer alten Bratpfanne mit hohen Wänden, die schon lange nicht mehr zum Kochen genutzt wird. Diese Pfanne wird nun draußen so lange erhitzt (Grill, Campingkocher,…), bis das Wasser weitestgehend verkocht ist.  Der Rest lässt sich nun mit Küchenpapier auswischen und ebenfalls im Restmüll entsorgen. Auf diese Art muss man nicht zig Liter Isopropylalkohol zum Recyclinghof schleppen.

Als erstes wurde natürlich die mitgelieferte Test- Datei gedruckt. Dabei handelt es sich um einen recht komplexen Turm eines Schachspiels. Da diese Datei schon optimal vorbereitet ist, klappt das natürlich auf Anhieb. Ist doch schön, wenn man gleich ein Erfolgserlebnis hat und nicht erst mal mit hundert Fehlversuchen den großen Frust aufbauen lässt.

Aber jetzt wollte ich dann doch etwas für meine Modellbahn drucken. Als erstes Objekt habe ich mir die Fernsprechbude ausgesucht, zu der es auf der Webseite des E103 Projekts die STL Datei zum kostenlosen Download gibt. Die Bude ist nicht ohne und stellt einige Ansprüche an die Vorbereitung in der Slicer Software. Beim Elegoo Mars ist wie bei den meisten derartigen Druckern die Software Chitubox dabei.

Damit kann man zwar automatisch Stützmaterial setzen lassen, doch das funktioniert nicht immer so, wie man es erwartet. Auch die Lage und Position im Druckraum können einen entscheidenden Einfluss auf das Druckergebnis haben.. Nach vier vergeblichen Versuchen und mit Hilfe einer zusätzlichen Software zum Überprüfen der Druckdatei habe ich es dann doch geschafft und eine brauchbare Fernsprechbude aus meinem Drucker heraus bekommen. Diese zusätzliche Software “Photon File Validator” ist eigentlich für die Anycubic Photon Druckerfamilie gedacht und wurde von der dortigen Community als Open Source Projekt entwickelt. Die Software arbeitet aber mit jedem Drucker zusammen, der von Chitubox unterstützt wird, also auch mit dem Elegoo Mars. Der File Validator überprüft die Druckdatei, die eigentlich direkt auf einen USB Stick gespeichert und damit zum Drucker transportiert werden soll. Und zwar Schicht für Schicht. Sind irgendwo Pixel, die keine Verbindung zum Objekt oder der Grundplatte haben, können diese Pixel nicht geruckt werden. Im harmlosesten Fall fehlt halt irgendwo ein winziges Stückchen, das man nicht sehen kann. Aber im schlimmsten Fall bricht das gesamte Objekt völlig in sich zusammen. Man sollte also tunlichst keine “schwebenden” Pixel in seiner Druckdatei haben. Sind solche schwebenden Pixel vorhanden wird das direkt erkannt. Der File Validator listet dann jede einzelne Schicht auf, in der solche Probleme auftauchen. Außerdem kann das Programm die meisten dieser Fehler selbsttätig korrigieren. Bei gröberen Fehlern klappt das aber nicht und man muss noch mal zurück in Chitubox und dort noch mal zusätzliche Stützen manuell platzieren, was natürlich möglich ist.

So sieht die Bude beim “Sonnenbad” aus:

Die Qualität ist beeindruckend und selbst in der starken Vergrößerung einwandfrei. So habe ich mir schon immer 3D Drucke gewünscht. Zum Beispiel ist der Türgriff durchbrochen und sehr zierlich. Auch die Oberflächen sind für einen 3D Druck wirklich anständig. Wirklich besser wird das bei Shapeways auch nicht.

Sonnenbad deswegen, weil das Harz noch aushärten muss, wenn es aus dem Drucker kommt. Dazu kann man auf die natürliche UV Strahlung im Sonnenlicht setzen oder, da die Sonne ja nun nicht immer so scheint, wie wir sie brauchen. auf eine UV Lichtquelle mit 405 nm Wellenlänge. Ich werde mir eine “Härtekammer” aus einem stabilen Schuhkarton,  2 m UV LED Lichtstreifen und einem Steckernetzteil basteln. Dazu wird die LED Lichtleiste in Spiralen am Boden und den vier Seiten des Kartons befestigt. Der ursprüngliche Deckel stellt nun den Boden der Härtebox dar. Hier werden die zu behandelnden Objekte aufgestellt und dann der Karton drüber gestülpt. Zwischen Netzteil und LED Strip kommt noch ein Ein- und Aus- Schalter. Damit kann man schnell und effektiv die Härtung der gedruckten Teile durchführen. Sobald ich dazu komme, diese Box zu bauen, werde ich ein paar Fotos davon machen und sie noch mal genauer vorstellen.

Der Druck hat knapp 4 Stunden gedauert und etwa 0,75€ an Resin verbraucht (hat Chitubox ausgerechnet). Ist aber noch nicht in der höchsten Auflösung, die möglich ist, gedruckt worden. Ich habe die Fernsprechbude mit 0,05 mm Schichtdicke gedruckt. Maximal (besser minimal) möglich sind 0,01 mm. Dann dauert der Druck aber 5 mal so lange. Da die X-Y Auflösung durch das Display bedingt fix bei 0,047 mm liegt, sind die 0,05 mm Z- Auflösung dazu ziemlich passend.

Es gibt nur einen wirklich nervenden Punkt am Elegoo Mars, und das ist der unerträglich laute Lüfter. Ich weiß einfach nicht, wo diese Hersteller immer noch solche Lüfter auftreiben. Danach muss man garantiert extra suchen, denn ein normaler 10 Cent PC Lüfter aus China ist hundertmal leiser als das Exemplar im Mars. Sobald ich ganz sicher bin, das alles einwandfrei funktioniert und auch länger funktionieren wird, fliegt der Lüfter im hohen Bogen raus und wird durch ein erträgliches Exemplar ersetzt.

Davon mal abgesehen ist der Elegoo Mars auf jeden Fall ein extrem guter und sehr günstiger 3D Drucker, mit dem man auch anspruchsvolle Modellbahn- Teile bis zu einer Größe von 12 x 6 x 15 cm selbst drucken kann.

 

Heute habe ich einen Deckel für den Resin Tank gelasert. Vorlagen für 3D Druck gibt es einige im Netz. Aber dafür benötigt man einen zweiten 3D Drucker, der deutlich größere Objekte als der Drucker, für den der Deckel gedacht ist drucken kann. Deswegen habe ich kurzerhand Inkscape angeworfen und einen Deckel zum Lasern selbst gezeichnet. Die SVG Datei hänge ich hier an, falls das jemand nachmachen möchte.

Die Zeichnung ist für einen 3 mm dicken Griff erstellt. Sofern man dickeres oder dünneres Material verwendet, muss man die Ausschnitte entsprechend modifizieren. Als ich mit dem Zeichnen fertig war, habe ich gemerkt, das mein 3 mm Sperrholz tatsächlich 3,5 mm Stärke hat. Ich habe es trotzdem gelasert, musste die Ausschnitte aber mit einer Feile leicht aufweiten. Auch die Ausschnitte für die Tank- Befestigung sind absichtlich knapp gezeichnet. Je genauer das hier abschließt, desto länger hält sich das Harz im Tank.

Nach dem lasern sieht das dann so aus.

Mit einem Schleifklotz leicht die Kanten brechen, damit sich das Teil besser anfühlt. Danach den Griff einleimen.

Demnächst werde ich den Deckel auch noch Schwarz lackieren, aber nicht heute.

Leichte Anpassungen der Aussparungen für die Tank- Befestigung waren, wie erwartet, ebenfalls nötig. Aber nun passt der Deckel prima.

Und hier wie versprochen die SVG Datei:

Was noch fehlt, ist eine UV Härtekammer. Die habe ich heute aus einem 2 Meter langen Schwarzlicht- LED Strip (mit 395 – 405 nm, genau der Wellenlänge die das Harz zum Härten benötigt) , einem 12 Volt 2 Ampere Steckernetzteil und einem stabilen Schuhkarton gebastelt. Ganz nach dem Motto: “Nicht schön aber tut’s”. Die LED und das Netzteil habe ich bei Amazon gekauft. Hat zusammen 15€ gekostet, Der Schuhkarton kam mal als Verpackung bei irgendeiner Bestellung mit an.

Zuerst habe ich in eine Seite des Kartons einen Schlitz geschnitten. Hier wird das Stromkabel nach außen geführt. Den Stecker habe ich zunächst mit Alleskleber am Karton festgeklebt. Danach das Ganze mehrfach mit Klebeband gesichert und fixiert. Mal sehen, wie lange das hält…

Schön ist ja was anderes aber “form follows function”, speziell in diesem Fall.

Nun kann man von Außen  das Netzteil anstecken.

Als nächstes muss man nun noch den selbstklebenden LED Streifen in den Karton kleben.

Auch das geschieht nach dem Motto, “Hauptsache es funktioniert”.

Auch wenn das mehr nach moderner Kunst aussieht als nach einem technischen Gebilde, erfüllt es dennoch seinen Zweck.

Es gibt genug sichtbares Licht, um selbst auf dem Blitzlicht- Foto sehen zu können, das die LED leuchten…

Nun platziert man die zu härtenden Objekte auf dem ehemaligen Deckel des Schuhkartons.

Jetzt einfach den Karton über stülpen und das UV Licht einschalten.

So nach ca 30 – 35 Minuten sind die Teile genug ausgehärtet, zumindest bei meiner Konstruktion….

Demnächst bekommt das Gebilde noch eine herkömmliche Schaltuhr verpasst, damit man nicht immer aufpassen muss, wann die Teile fertig ausgehärtet sind.