Mit OpenSCAD zum 3D Modell
« | 24 Jan 2021 | »Meine gestern zusammengebaute DIY-Smartwatch braucht ein Gehäuse. Aber:
Verdammt! Auf Thingiverse.com gibt es kein 3D Modell dafür!
Kein Problem … dann machen wir es eben selbst.
Das ist offen gesagt das erste Mal, dass ich wirklich ein Gehäuse brauche
und im Netz (noch) keines gefunden habe.
Doch zum Glück war bei diversen “Empfehlungen” die Software
OpenSCAD dabei, die gegenüber ihren Konkurrenten
wie FreeCAD und weiß der Geier wie die anderen heißen nur 20 MB groß war,
während die anderen bei 200 MB anfingen.
Als Minimalist dachte ich zuerst “Hey Cool” um danach gleich zu zweifeln, weil: Wenn es so klein ist, kann es vermutlich nichts.
Aber für meine Zwecke stellte sich dieses Stück Software als ideal dar. Es baut nämlich auf einer Script-Sprache auf, mit der man sein Modell aus geometrischen Figuren zusammensetzen kann.
Und das ist eine Form, in der ich leicht denken kann. Es ist wie damals in der Schule, als man mit Lineal und Zirkel bewaffnet Quader und Pyramiden vermessen und die fehlenden Punkte ausrechnen musste.
Wie man eine offene Schachtel baut
Bildlich gesprochen: Man erzeugt einen massiven Quader und subtrahiert einen etwas kleineren Quader aus ihm heraus, sodass genau die Ränder und der Boden der Schachtel übrig bleiben.
Das ist es … mehr kann ich bis dato auch nicht in OpenSCAD
und
trotzdem reicht das voll und ganz aus.
Nachdem laut Online-Hilfe cube([length, width, height])
einen Quader
erzeugt, braucht man noch eine “Funktion” für das “rausschneiden” und die
heißt difference()
.
Meine Smartwatch ist etwa 46x38x16 Millimeter groß. Soll die Schachtel eine Dicke von 1mm haben, lautet das OpenSCAD Script:
Wir bauen einen äußeren Quader angefangen bei Koordinate (0,0,0) und dann einen zweiten Quader startend bei (1,1,1) der in allen Dimensionen um 2mm kleiner ist außer bei der Höhe, denn dort soll ja oben offen bleiben.
Es kann nicht schaden bei offenen Stellen den zweiten Quader etwas größer zu dimensionieren, damit er wirklich “ins Freie” durchsticht. Endet das subtrahierte Objekt nämlich genau auf der Grenzfläche, kann am Ende dennoch eine hauchdünne Schicht herauskommen, die gedruckt wird.
Modell wie Steinmetz herausarbeiten
Und genau das gleiche macht man für alle anderen Öffnungen. In meinem Fall
sind das das Display, der On/Off Schalter, diverse Buttons und LEDs.
Man misst mit dem Lineal, wie weit die Öffnung von der Ursprungsecke entfernt
ist und fügt weitere translate
und cube
Zeilen an.
difference()
behandelt das erste Objekt wie einen rohren Felsblock
und alle weiteren Objekte werden aus diesem Block herausgeschlagen.
Mit weiteren Objekt-Bezeichnern wie cylinder
lassen sich auch runde Elemente
herausstanzen.
Und so kam am Ende mein Entwurf für ein primitives Smartwatch Gehäuse heraus:
1difference() { 2 translate([0,0,0]) cube([48, 41, 17]); //shell 3 4 translate([1,1,1]) cube([46, 39, 17]); //inner space 5 translate([8.5,2.5,-1]) cube([24.5, 36, 10]);//display 6 translate([32,12.5,-1]) cube([3.5, 16, 10]);//display 7 translate([2,17,-1]) cube([6, 7, 3]); //top LED 8 9 translate([8.5,-1,2.5]) cube([16, 10, 5]); //wheel 10 translate([30,-1,2.5]) cube([7, 5, 3]); //on/off 11 translate([20,-1,12]) cube([9, 5, 6]); //usb 12 13 translate([11.5,37,3]) cube([7, 5, 4]); //button 14 translate([11.5,37,11]) cube([7, 5, 4]); //button 15 translate([21,37,3]) cube([6, 5, 6]); //side LED 16 translate([29.5,37,3]) cube([7, 5, 4]); //button 17 18 translate([-1, 7, 12]) cube([6, 27, 10]); //top band 19 translate([45, 7, 12]) cube([6, 27, 10]); //bottom band 20 21 translate([4, 4, -1]) cylinder(5, 1.7, 1.7); //screw 22 translate([44, 4, -1]) cylinder(5, 1.7, 1.7); //screw 23 translate([4, 37, -1]) cylinder(5, 1.7, 1.7); //screw 24 translate([44, 37, -1]) cylinder(5, 1.7, 1.7); //screw 25};
Das Teil ist einfach nur primitiv, man könnte jetzt viele Zahlen durch Variablen und Rechnungen ersetzen, doch für mich war das direkte verfüttern der Koordinaten ausreichend, um nach 15 Minuten den ersten Entwurf fertig zu haben.
Nacharbeit und Testdruck
Es brauchte letztendlich dann doch mehrere Anläufe,
bis ein vernünftiges Ergebnis fertig war.
Einerseits hatte ich auf einige Öffnungen vergessen, andererseits habe
ich gelernt, dass ein 1 Millimeter mehr Freiraum extrem helfen kann,
weil es ansonsten meist zu eng ist, um das Gerät unbeschadet ins Gehäuse
hineinzubekommen.
Und während dieser Größentests dabei ist mir leider auch das Display etwas gesplittert.
Doch wenn man die Druckzeiten (etwa 40 Minuten pro Versuch) wegrechnet, kann man sagen, dass ich maximal eine Stunde für das Modell gebraucht habe, inklusive aller Einbauvorgänge und Scriptkorrekturen.
Fazit
Mann! Das hätte man mir früher zeigen sollen!
Ich dachte immer, dass Modelle zu erstellen höhere Magie sei und man Tage damit verbringt, Linien an die richtige Stelle zu setzen. Und überhaupt glaubte ich, dass man alles mit der Maus Millimeter für Millimeter zusammenklicken muss.
Aber die Idee mit den Koordinaten-Scripts ist echt super.
Mag sein, dass man komplexere Sachen damit nicht so gut lösen kann, aber für
meinen Bedarf an MCU
Gehäusen ist OpenSCAD perfekt.
Denn da brauche ich meist nur Quader mit Schalter-Löchern.
Das heißt dann, dass ich in Zukunft nicht mehr “ähnliche” Gehäuse drucken muss um sie danach zurecht zu schleifen, sondern ich kann an den nötigen Stellen gleich das Modell patchen.
Also 10 Sterne und Daumen hoch für dieses kostenlose und einfache Tool.