Aller Anfang ist leicht
Ich begann im Jahre 2011 über erste eigene 3D-Modelle für den 3D-Drucker nachzudenken. Wie die Teile aussahen, hatte ich klar im Kopf. Aber ich benötigte ein einfaches und leicht zu erlernendes Programm für 3D-Konstruktion. Mit OpenSCAD war die geeignete Lösung schnell gefunden. Folglich werde ich hier primär auf 3D-Konstruktion mit OpenSCAD eingehen und einfache Beispiele erläutern. Weiterführende Beispiele finden sie verlinkt in meinem thingiverse Account. Zu guter Letzt werde ich aber auch ein paar Alternativen vorstellen.
Wenige Vorrausetzungen
OpenSCAD – The Programmers Solid 3D CAD Modeller.
Als Informatiker gefiel mir der Slogan besonders gut.
Aber keine Angst es braucht nur wenige Dinge um OpenSCAD nutzen zu können.
- Ein Programm downloaden und installieren (Verfügbar für MAC, Windows und Linux)
- Rudimentäre Englisch Kenntnisse (cube, cylinder, sphere, translate, rotate)
Die erste 3D-Konstruktion mit OpenSCAD
Zum Beweis wie einfach 3D-Konstruktion mit OpenSCAD ist, einfach die Anwendung starten, im Editor den folgenden Text eingeben und F5 (oder auch F6) drücken.
cube();
Fertig ist das erste druckbare Objekt.
Einfache Körper
Zu sehen ist ein Würfel mit der Kantenlänge 1 mm. Weil vermutlich niemand einen Würfel mit Kantenlänge 1 mm drucken möchte, machen wir ihn etwas grösser.
cube(10);
Folglich hat nun der Würfel eine Kantenlänge von 10 mm. Außerdem bietet cube() die Möglichkeit, die Längen aller Kanten einzeln anzugeben. Typisch ist dabei die Angabe von Werten als dreifach Tupel für X, Y und Z in eckigen Klammern. Diese Darstellung werden wir noch öfters sehen.
cube([30,20,10]);
Als weiteres einfaches Objekt schauen wir uns noch den Zylinder an.
cylinder(d=10, h=25);
Da ein Computer keine runden Objekte erstellen kann, erstellt er diese aus vielen geraden Linien. Dieser Effekt ist hier deutlich zu sehen. Da wir aber gerne runde Objekte haben wollen, können wir die Anzahl der Linien beeinflussen. Dazu verwendet OpenSCAD folgenden Befehl.
$fn=X;
X steht dabei für die Anzahl der zu erzeugenden Linien. $fn kann als zusätzlicher Parameter an Objekte übergeben oder global für die gesamte Konstruktion gesetzt werden. Somit ergeben sich folgende Schreibweisen.
cylinder(d=10, h=5, $fn=500);
oder
$fn=500;
cylinder(d=10, h=5);
Einfache Transformationen
Am Beispiel des Zylinders betrachten wir nun noch eine häufig genutzte Tranformation, nämlich die Rotation.
rotate([X,Y,Z])
X, Y und Z stehen dabei für die Achsen im Koordinatensystem, um die das gewünschte Objekt gedreht wird. Betrachten wir dazu unser voriges Beispiel.
rotate([90,0,0]) cylinder(d=10, h=5);
Als nächstes betrachten wir zwei weitere wichtige Transformationen die Translation (Verschiebung) von Objekten und das Schneiden von Objekten.
translate([X,Y,Z])
X, Y und Z stehen dabei für die Achsen im Koordinatensystem, um die das gewünschte Objekt verschoben wird.
Das Beispiel zeigt einen Quader, aus dem ein anderer etwas kleinerer Quader „herausgeschnitten“ wurde. Dazu verwendet OpenSCAD die Funktion difference(). Durch die Verschiebung um 2mm in X, Y und Z-Richtung ergibt sich eine Box mit 2mm Wandstärke.
difference()
{
// Zuerst wird ein Quader erzeugt
cube([40,20,10]);
// Danach wird ein zweiter Quader subtrahiert
translate([2,2,2]) cube([36,16,8]);
}
Die gezeigten Formen und Transformationen bilden die Basis einer jeden Konstruktion mit OpenSCAD, weshalb wir nun ein etwas komplexeres Objekt angehen können.
Eine komplexere Konstruktion
Schauen wir uns nun ein etwas komplexeres Gebilde an, das Logo von OpenSCAD.
Hierbei handelt es sich um eine Kugel mit drei runden „Bohrungen“. Da es in OpenSCAD keine Bohrungen gibt, wird dafür ein Zylinder verwendet und aus der Kugel entfernt. Dazu verwendet OpenSCAD die Funktion difference().
difference()
{
// Zuerst wird eine Kugel erzeugt
sphere(d=20);
// Danach werden die Bohrlöcher subtrahiert
cylinder(d=10, h=25, center=true);
rotate([90,0,0]) cylinder(d=10, h=25, center=true);
rotate([0,90,0]) cylinder(d=10, h=25, center=true);
}
// Schliesslich wird der rote Zylinder wieder eingefügt
rotate([90,0,0]) color(„indianred“, 0.3) cylinder(d=10, h=25, center=true);
Wie komplex geht es?
Schliesslich bleibt die Frage: Was ist Möglich mit OpenSCAD?
Beinahe alle Designs die ich selbst erstellt habe, sind mit OpenSCAD erstellt. Sehen hier sie weitere Beispiele und was alles möglich ist.
Ein wirklich besonderes Beispiel ist der OpenSCAD „Drache“ des Designers Torleif. Dieser Drache ist wie viele weitere Beispiele in thingiverse zu finden: Procedural Dragon.
Codestyle
In den gezeigten Beispielen habe ich größten Wert auf Verständlichkeit gelegt und dabei hier und da auf guten Programmierstil verzichtet. Eine umfangreiche Ausführung zum Thema Code Style würde den Umfang dieser Seite sprengen. Bei Bedarf kann ich hier gerne weiterhelfen.
Meine kleine Bibliothek
Im Laufe der Zeit habe ich eine Bibliothek erstellt mit Objekten, die ich immer wieder benutze. Die Bibliothek steht bei Thingiverse zum Download bereit. Dort gibt es auch eine ausführliche Dokumentation. Aktueller Inhalt: pyramid, tri_angle, hollow_sphere, hollow_cylinder, hollow_cube, rounded_cube und hollow_rounded_cube, rounding und drill_cone_head.
Alternativen
Obwohl ich bekennender Anhänger von OpenSCAD bin, kann man damit nicht alles machen. Wie jedes Programm hat auch OpenSCAD Stärken und Schwächen. Zum Beispiel ist es nicht jedermann’s Sache Objekte zu programmieren.
Eine Alternative für Einsteiger ist dabei BlocksCAD. Angelehnt an die Blockly Programmierumgebung kann man damit 3D-Objekte visuell programmieren. Das erstellte Objekt kann als druckares STL exportiert werden, oder als OpenSCAD Code, den man dann weiterbearbeiten kann. BlocksCAD ist nur als Onlineversion verfügbar.
Eine weitere Einsteigerlösung ist Tinkercad. Tinkercad ist ebenfalls ein reines Onlineprogramm aber sehr intuitiv gestaltet und für Einsteiger absolut empfehlenswert.
Wenn es ein echtes CAD Programm und trotzdem OpenSource sein soll, gibt es noch FreeCAD. Nicht unbedingt mein Favorite, da es etwas gewöhnungsbedürftig ist, aber eben auch sehr mächtig. Neben der reinen Konstruktion können hier auch Druckdaten im STL Format nachbearbeitet werden.
Zur reinen STL Bearbeitung verwende ich zum Teil noch Meshmixer, ein Modellierungstool für Freiformen.
Hier noch eine umfangreiche Liste mit Software für 3D-Modellierung.