Das Erstellen von 3D-Modellen mit den üblichen CAD-Programmen ist oft eine kniffelige Angelegenheit. Als Alternative bietet sich das einfach programmierbare OpenSCAD an.
Wie der Name schon vermuten lässt, handelt es sich bei OpenSCAD um freie Software, die Sie direkt von der Projekt-Homepage [1] herunterladen können. Die Entwickler stellen dort Installationspakete für die gängigen Betriebssysteme bereit. Falls kein passendes Paket für Ihr System dabei sein sollte, lässt sich OpenSCAD aus dem Quelltext bauen. In vielen Distributionen findet sich das Programm jedoch auch direkt in den Paketquellen, was den Installationsaufwand auf wenige Klicks reduziert.
Grundlagen
Beim Start blendet OpenSCAD einen einfachen Willkommensdialog ein. Unter Beispiele listet es eine Reihe von Vorlagen auf, anhand derer Sie die wichtigsten Grundlagen erlernen können. Mit einem Klick auf Neu startet das Programm mit einer noch leeren Zeichenfläche (Abbildung 1).

Abbildung 1: Das Anwendungsfenster von OpenSCAD: Im Programmierbereich links konstruieren Sie Ihr Objekt mittels einfacher Kommandos.
Der Aufbau der Anwendung gliedert sich in drei Bereiche. Im Programmierbereich auf der linken Seite des Bildschirms zeigt ein Editor den Programmcode zum Erzeugen der 3D-Modelle an. Im Vorschaubereich rechts oben zeigt das Programm die gerenderten 3D-Objekte an. Mit der linken Maustaste drehen Sie die Darstellung, mit der mittleren vergrößern und verkleinern Sie die Anzeige, mit der rechten verschieben Sie den Bildausschnitt. In die Ausgabekonsole unterhalb des Vorschaubereichs schreibt OpenSCAD eventuell auftretende Fehlermeldungen und liefert Details zum Renderprozess.
OpenSCAD kennt zwei Modi zur Berechnung der 3D-Modelle: Im per Design | Vorschau oder [F5]+ gestarteten Vorschaumodus berechnet OpenSCAD nur ein grob gerendertes Modell. Das erscheint zwar schnell auf dem Bildschirm, enthält aber eventuell Fehler. Mit Rendern oder [F6]+ errechnet das Programm dagegen sämtliche Details. Das verlangsamt die Aktion besonders bei größeren Modellen wesentlich, weshalb auch nach Abschluss der Kalkulation eine Glocke erklingt. Erst nach diesem Schritt lässt sich das Modell mit [F7] im STL-Format exportieren und dann auf einem 3D-Drucker ausgeben. Für diese Aktionen gibt es auch Schalter in den Symbolleisten sowie Einträge in den Menüs; in der Praxis kommt man mit den Tastenkürzeln jedoch am schnellsten ans Ziel.
Die Syntax der von OpenSCAD genutzten Programme ist recht einfach. Es gibt Funktionen, die 3D-Objekte erzeugen, und solche, die diese Objekte modifizieren oder verknüpfen. Die einzelnen Kommandos werden immer mit einem Semikolon abgeschlossen, außer sie sollen nachstehende Kommandos beeinflussen. Wir sehen später, was damit gemeint ist. Kommentare im Code beginnen immer mit zwei Schrägstrichen (//). Um Blöcke von Funktionen zu erzeugen, schließen Sie diese in geschweiften Klammern ein.
Erstes Beispiel
Nichts ist langweiliger als pure Theorie, deshalb starten wir direkt mit einem einfachen Beispielprogramm. Wir erzeugen einen Kubus mit einer Kantenlänge von 30 Längeneinheiten (Abbildung 2). OpenSCAD kennt keine Bemaßungen, daher die Bezeichnung Längeneinheiten. Faktisch rechnet das Programm die Längeneinheiten beim Exportieren in Millimeter um, es sei denn, Sie verwenden eine angelsächsische Systemumgebung – dann rechnet OpenSCAD mit Zoll.
Für den Würfel geben Sie das Kommando cube (30); in den Programmierbereich ein und drücken danach die Taste [F5]+. Zusätzlich zum Kubus erzeugen wir nun einen Zylinder mit einem Radius von 10 Einheiten (also einer Länge von 1 cm) und einer Länge von 40 Einheiten (4 cm). Das dazugehörige Kommando lautet: cylinder(40,10,10);, das Ergebnis des Renderers zeigt Abbildung 3. Damit das Objekt im Vorschaubereich erscheint, drücken Sie wieder [F5].
Sie sehen nun zwei interessante Verhaltensweisen von OpenSCAD. Erstens zeichnet es die Objekte immer ausgehend vom Nullpunkt. Zweitens verrechnet OpenSCAD im Normalfall sich überlappende Formen zu einem Objekt. Im Beispiel verschmilzt es den Kubus und den Zylinder miteinander.
OpenSCAD kennt dabei drei Wege, Objekte miteinander zu verbinden. Als Standardverfahren dient die union(), die eine Vereinigungsmenge erzeugt. Im Gegensatz dazu bildet die difference() eine Restmenge: OpenSCAD zieht alle folgenden Objekte vom ersten erzeugten Objekt ab. Schließlich gibt es noch die intersection(), die eine Schnittmenge aus dem Bereich bildet, in dem beide Objekte liegen.
Würfel mit Löchern
Sehen wir uns doch einmal an, wie die difference()-Funktion arbeitet. Abbildung 4 zeigt das errechnete Ergebnis von Listing 1. Hier wurde der Zylinder vom Kubus abgezogen. Wichtig hierbei ist die Tatsache, dass die difference()-Funktion alle folgenden Objekte vom zuerst genannten Objekt abzieht.
Listing 1
difference(){
cube (30);
cylinder(40,10,10);
}
An dieser Stelle sehen Sie sehr gut den Unterschied zwischen dem Vorschaumodus ([F5]+) und dem finalen Render-Modus ([F6]). Im Vorschaumodus bleibt ein Stückchen am Fuß des Kubus stehen (Abbildung 4), das im präziser arbeitenden Render-Modus nicht mehr zu sehen ist – versuchen Sie es selbst einmal.









