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.

  1. Ein Programm downloaden und installieren (Verfügbar für MAC, Windows und Linux)
  2. 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]);

3D-Konstruktion: Quader alias cube
„Cube“ in OpenSCAD

Als weiteres einfaches Objekt schauen wir uns noch den Zylinder an.

cylinder(d=10, h=25);

3D-Konstruktion: Zylinder
Zylinder in OpenSCAD

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);

3D-Konstruktion: Zylinder
Zylinder in OpenSCAD mit hoher Anzahl Segmenten

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);

3D-Konstruktion: Zylinder gedreht
Zylinder 90° gedreht um X-Achse

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.

3D-Konstruktion: Box
Box erstellt durch Translation und Subtraktion

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.

3D-Konstruktion: OpenSCAD Logo
Kugel mit Ausschnitten – Das OpenSCAD Logo

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.

OpenSCAD Bibliothek
OpenSCAD Bibliothek

 

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. Am Schluss wird OpenSCAD Code erzeugt, den man damit 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.