OpenSCAD im Test: Codebasiertes Konstruieren mit CSG

Einstieg: 31. Januar 2021 und die Jahre danach

31. Januar 2021. OpenSCAD 2021.01 erscheint. In den Versionshinweisen stehen Funktionsliterale, der Exponentenoperator ^, mehrere Editor-Tabs und Autovervollständigung. Es sieht nach einem gewöhnlichen Wartungsrelease aus.

Mehr als fünf Jahre später führt die offizielle GitHub-Seite 2021.01 noch immer als letzte stabile Version. Heißt das, das Projekt steht still? Nein. Die Entwicklungs-Snapshots laufen weiter, und die neue Geometrie-Engine Manifold wird über diesen Kanal ausgeliefert. OpenSCAD lebt nicht von seiner Versionsnummer, sondern von den Dateien, die es erzeugt.

OpenSCAD ist ein freies, quelloffenes Programm für solide 3D-CAD-Modelle, das Geometrie über eine Skriptsprache beschreibt. Man zieht keine Fläche mit der Maus über den Bildschirm. Man beschreibt Grundkörper wie Würfel, Zylinder und Kugeln, verbindet oder subtrahiert sie mit booleschen Operationen und extrudiert zweidimensionale Profile in die dritte Dimension. Das Modell ist eine Textdatei; seine Maße stehen in Variablen. Deshalb arbeitet OpenSCAD weniger wie ein Zeichenprogramm und mehr wie ein 3D-Compiler [1][5].

OpenSCAD-Benutzeroberfläche mit Code-Editor links und 3D-CSG-Vorschau rechts
OpenSCAD 2015.03 Benutzeroberfläche: Skriptbasierte Modellierung neben interaktivem 3D-Renderfenster. Bild: Laserlicht, CC0, via Wikimedia Commons.

OpenSCAD auf einen Blick

Entwickler Marius Kintel und die Open-Source-Gemeinschaft [1][7]
Erste Version 19. Februar 2010 [7]
Letzte stabile Version 2021.01 (31. Januar 2021); Entwicklungs-Snapshots werden getrennt verteilt [2][4][7]
Lizenz GPL-2.0-or-later, mit einer besonderen Ausnahme für die Bindung an CGAL [1][7][10]
Programmiersprache C++ und Qt; Oberfläche mit Qt, Vorschau mit OpenCSG/OpenGL [1][7]
Geometrie-Kernel CGAL in der stabilen Version; optionaler Manifold-Kernel in Entwicklungsbuilds [1][3][7]
Plattformen Windows, macOS, Linux; zusätzlich Pakete für FreeBSD, NetBSD und OpenBSD [3][7]
Dateiformate Import: STL, 3MF, OFF, AMF, DXF, SVG. Export: STL, 3MF, OFF, AMF, DXF, SVG, PNG, PDF [5][7]
Preis Kostenlos; keine Lizenzgebühr, kein Abonnement, keine Nutzerquote [1]

Definition: Wenn Code zu einem Körper wird

In OpenSCAD ist ein Modell keine Szene, die man mit der Maus bemalt. Es ist das Ergebnis einer Übersetzung. Das Skript wird eingelesen, Variablen werden aufgelöst, Module werden aufgerufen, und am Ende steht ein Baum aus soliden Körpern. Dieser Baum wird mit Constructive Solid Geometry ausgewertet: union vereinigt, difference subtrahiert, intersection behält die Schnittmenge. hull legt eine konvexe Hülle um zwei Formen; minkowski bläht einen Körper mit einem anderen auf. Zweidimensionale Profile aus square, circle und polygon werden über linear_extrude oder rotate_extrude zu Festkörpern [1][5].

Die praktische Folge: Das Design gehört in die Versionsverwaltung. Eine .scad-Datei ist reiner Text. Sie lässt sich Zeile für Zeile vergleichen, verzweigen, prüfen und zusammenführen. Die meisten CAD-Dateien können das nicht. Deshalb wird OpenSCAD auch für offene wissenschaftliche Hardware und reproduzierbare Forschung empfohlen [7].

Erste Wendung: Die Vorschau ist schnell, der Render ist ehrlich

Dies ist der am häufigsten missverstandene Punkt an OpenSCAD. Was auf dem Bildschirm erscheint, ist nicht immer die echte Geometrie.

Vorschau (F5) nutzt OpenCSG und OpenGL. Über Z-Buffering entsteht schnell ein Bild, aber es ist eine Näherung. Z-Fighting oder kleine visuelle Lücken sind möglich. Render (F6) wertet mit CGAL die exakte Geometrie aus und erzeugt ein vollständig tesselliertes Netz. Dann gibt es keine Näherung mehr; der Preis ist Zeit. Ein einfaches Teil ist in Sekunden fertig, während ein großes Design mit vielen booleschen Operationen und Minkowski-Summen Minuten oder sogar Stunden dauern kann [5].

Ein guter Arbeitsablauf lautet deshalb nicht „grobe Vorschau, dann präziser Render“. Er lautet: Geometrie in kleine, lesbare Module teilen, unnötige boolesche Ebenen vermeiden und $fn zusammen mit $fa/$fs bewusst wählen. Mehr Polygone sind nicht automatisch besser; ein genauerer Zylinder bedeutet einen längeren Render.

Motiv: die 2-mm-Wand. Eine Wandstärke ist der Punkt, an dem eine Konstruktionsentscheidung sowohl die technische Absicht als auch die Realität des Drucks berührt. In OpenSCAD hält man diese 2 mm in einer Variablen; das ganze Teil bleibt an diese Zahl gebunden.

CSG-Logik: Eine Zahl, das ganze Teil

Das folgende Beispiel beschreibt einen parametrischen Montagewinkel. Wenn wand von 2 mm auf 3 mm wächst, ändern sich Bodenplatte, Seitenwand und das Material um die Schraubenlöcher gemeinsam. Man aktualisiert nicht drei getrennte Zeichnungen.

// Parametrischer L-Winkel
$fn = 64;

wand        = 2.0;   // Motiv: die 2-mm-Wand
basis_b     = 60;
basis_t     = 40;
hoehe       = 35;
loch_d      = 4.4;   // Spiel für eine M4-Schraube
loch_rand   = 12;

module winkel() {
    difference() {
        union() {
            // Bodenplatte
            cube([basis_b, basis_t, wand]);
            // senkrechte Wand
            cube([basis_b, wand, hoehe]);
            // Eckverstrebungen
            for (x = [loch_rand, basis_b - loch_rand]) {
                translate([x, wand, wand])
                    rotate([0, -45, 0])
                        cube([wand, basis_t - wand, wand]);
            }
        }
        // Löcher im Boden
        for (x = [loch_rand, basis_b - loch_rand]) {
            translate([x, basis_t - loch_rand, -1])
                cylinder(d = loch_d, h = wand + 2);
        }
        // Löcher in der senkrechten Wand
        for (x = [loch_rand, basis_b - loch_rand]) {
            translate([x, -1, hoehe - loch_rand])
                rotate([-90, 0, 0])
                    cylinder(d = loch_d, h = wand + 2);
        }
    }
}

winkel();

Entscheidend ist, was der Code nicht tut: Er zeichnet kein Bild. Er formuliert die Regeln eines festen Körpers. Der zweite Block innerhalb von difference ist kein Loch; er ist das Volumen, das entfernt werden soll. OpenSCAD berechnet dieses Volumen, zieht es vom Hauptkörper ab und tesselliert den Rest. Man zieht das Modell nicht größer; man ändert die Zahl.

Zweite Wendung: CGALs Exaktheit und Manifolds Geschwindigkeit

Die stabile Version stützt sich auf CGAL. CGAL ist für exakte Ergebnisse in der Computational Geometry bekannt. Das beruhigt bei verschachtelten Körpern und engen Toleranzen. Der Preis ist Rechenaufwand. CGAL hat eine eigene Lizenz, und eine besondere Ausnahme im GPL-Text von OpenSCAD macht die Bindung daran möglich [1][10].

Der neuere Manifold-Kernel setzt einen anderen Schwerpunkt. Die offizielle Download-Seite erklärt, dass Manifold in Entwicklungs-Snapshots in den Einstellungen aktiviert werden kann und einen „großen Performanceschub“ bietet [3]. Im Januar 2025 kündigte das Projekt den Manifold-basierten Export farbiger 3MF- und OFF-Dateien an, ein wichtiger Schritt für die mehrfarbige Drucklandschaft [9]. Diese Funktionen stecken jedoch nicht in der stabilen Version 2021.01, sondern im Entwicklungskanal. Wer eine Produktionslinie betreibt, nimmt zuerst die stabile Version. Wer experimentelle Geschwindigkeit will, nimmt einen Snapshot. Beides ist nicht dasselbe.

Ehrlichkeit ist hier wichtig: Die Renderzeit hängt weniger von der reinen Polygonzahl ab als von der Zahl boolescher Knoten und den beteiligten Operationen. minkowski ist teuer; lange Ketten verschachtelter difference-Operationen sind teuer; ein sehr hohes $fn ist teuer. Umgekehrt spart das Fixieren eines vorberechneten Untermoduls mit render() oder das Aufteilen der Geometrie oft Sekunden.

Parametrische Bibliotheken: Das Rad nicht neu erfinden

Die Kernsprache ist klein; die Stärke kommt aus Bibliotheken. MCAD wird seit Version 2011.12 mitgeliefert [4]. BOSL2 (Belfry OpenSCAD Library) bietet ein breites Werkzeugset für Zahnräder, Scharniere, Schrauben, Lager und Befestigungspunkte; der Hackaday-Test von 2025 hebt besonders das „Attachment“-System hervor, mit dem man an Normteile anschließt [11]. Bibliotheken wie NopSCADlib bringen die Maße realer Schrauben, Muttern, Unterlegscheiben und Aluminiumprofile ins Modell [12].

3Dnatives formuliert allerdings eine berechtigte Kritik: OpenSCAD hat keinen ausgereiften Paketmanager, und Tutorials sowie Fehlermeldungen sind für Nicht-Programmierer nicht immer klar genug [8]. Eine Bibliothek zu installieren bedeutet oft, eine Datei herunterzuladen und in OPENSCADPATH abzulegen. Für Menschen mit Linux-Erfahrung ist das normal, für Neueinsteiger holprig.

Thingiverse Customizer: Wenn Code zur Oberfläche wird

Am sichtbarsten ist OpenSCAD im 3D-Druck. Der Customizer, eingeführt mit Version 2019.05, verwandelt Skriptvariablen in eine automatische Formularoberfläche [6]. Ein Designer schreibt Kommentare wie // [0:100] für einen Schieberegler, /* [Tab] */ für Registerkarten und /* [Hidden] */ für verborgene Variablen. Der Nutzer ändert ein Maß, ohne Code zu sehen; im Hintergrund wird dieselbe .scad-Datei erneut übersetzt.

Die Thingiverse-Kompatibilität macht daraus eine technische Einschränkung. Laut Wikibooks zeigt der Customizer nur Variablen aus der Hauptdatei mit einfachen Literalen oder Vektoren aus höchstens vier Zahlen; Ausdrücke wie str() oder 12 + 0.5 werden nicht als Parameter angeboten. Kontrollkästchen werden von Thingiverse nicht unterstützt, während die Syntax „Schieberegler mit Maximalwert“ speziell für die Kompatibilität erhalten bleibt [6].

Die offiziellen OpenSCAD-News vermerken, dass die Thingiverse-Metadatensyntax 2016 unterstützt wurde und der Thingiverse Customizer 2022 „seit langem defekt“ war; MakeWithTech startete damals einen alternativen Online-Dienst [2]. Die Lehre: Customizer-Kompatibilität ist keine Magie. Sie ist ein Vertrag, der in Kommentaren steckt. Dieselbe Datei, die auf dem Desktop läuft, kann im Browser in ein Timeout laufen; bei komplexen Skripten bleibt das lokale Rendern der zuverlässige Weg.

Plattformunterstützung und Installationsrealität

OpenSCAD läuft unter Windows, macOS und Linux sowie in der BSD-Familie. Die stabile Version nennt Windows 7 und neuer in 32/64 Bit sowie macOS 10.9 und neuer; Release Candidates zielen auf Windows 10+ 64 Bit und macOS 12+ als Universal-Build [3]. Unter Linux gibt es AppImage, Distributionspakete, Snap und Flatpak. Wikipedia nennt eine Installationsgröße von 15–27 MB je nach Plattform [7].

Es gibt auch einen WebAssembly-Build, doch die offizielle Download-Seite sagt ausdrücklich, dass er experimentell ist und Vorschau, Schriften und eine eingebaute Oberfläche fehlen [3]. „Ich habe OpenSCAD im Browser geöffnet“ ersetzt also nicht die Desktop-Version. Der Kommandozeilen-Export mit openscad -o teil.stl teil.scad macht das Werkzeug dagegen in CI-Pipelines und Batch-Skripten wertvoll [2][5].

Die Lernkurve: Für die einen steil, für die anderen selbstverständlich

Die Lernkurve ist keine einzelne Linie. Wer bereits programmiert, kennt Variablen, Module, Schleifen und Bedingungen; ein brauchbares Teil entsteht oft in der ersten Stunde. Für visuell arbeitende Designer schaltet sich die Gewohnheit, etwas zu greifen und zu ziehen, vollständig ab. 3Dnatives hält die Software für „erfahrene Nutzer, die mit Programmierung vertraut sind“, und nennt die Lernkurve weiterhin recht steil; Tutorials und Fehlermeldungen könnten besser sein [8].

Ein praktischer Weg: mit cube, cylinder, translate und difference beginnen. Im zweiten Schritt ein module schreiben. Im dritten eine for-Schleife für wiederkehrende Löcher nutzen. Erst danach zu Bibliotheken greifen. 3Dnatives schlägt Ähnliches vor: zuerst ein blockbasiertes Werkzeug wie BlocksCAD ausprobieren, damit die CSG-Logik vor der Syntax sitzt [8].

Für wen es passt – und für wen nicht

Gut geeignet: mechanische Winkel, Verbinder, Flansche, Adapter, Sensorhalter, Gehäuse, Montageplatten, Zahnrad- und Riemensysteme, Laborhardware und Familien wiederkehrender parametrischer Teile. Wer „dasselbe Teil in zwölf Größen“ braucht, fährt mit dem Variablenmodell von OpenSCAD sauberer als mit zwölf Dateien. In Open-Hardware-Projekten ist die gemeinsame Quelltextdatei ein großer Vorteil.

Schlecht geeignet: organisches Modellieren, Charakterplastik, weiche Möbeloberflächen, Konzeptkunst, Haar- und Stoffsimulation, direkte Netzbearbeitung, große Maschinenbaugruppen mit Verknüpfungen (Mates) und die Erstellung von technischen Zeichnungen oder Stücklisten. OpenSCAD ist ein Festkörper-Compiler, keine Bildhauerbank. Für organische Formen ist Blender das bessere Werkzeug; für parametrische Flächen und Baugruppen passen FreeCAD oder Fusion 360 besser.

Eine weitere Grenze: Es gibt keinen STEP- oder IGES-Export. Die stabile Version liefert Netzdaten wie STL, 3MF und OFF. Wer B-Rep direkt in eine Lieferkette geben muss, kommt mit OpenSCAD allein nicht ans Ziel [5][7].

Kurzer Vergleich mit Alternativen

Werkzeug Ansatz Stärke Preis gegenüber OpenSCAD
OpenSCAD Skript + CSG Parametrische Teile, Versionskontrolle, Serienfertigung Schwach bei organischer Form und visuellem Feedback
FreeCAD Visuell + Python, OCCT Parametrische Körper, Baugruppen, Zeichnungen, STEP Schwerere Oberfläche, lockerere Skriptdisziplin
Blender Netz + Bildhauerei Organische Form, Kunst, Animation Schwach bei maßhaltigen Technikteilen
CadQuery Python + OCCT Python-Ökosystem, B-Rep, Automatisierung Höherer Einrichtungs- und Sprachaufwand
OpenJSCAD JavaScript + CSG Schnelle Browser-Experimente, Web-Integration Kleineres Desktop- und Bibliotheksökosystem
Fusion 360 Cloud + visuell parametrisch Baugruppen, CAM, Simulation, Ausbildung Abonnement, Cloud-Abhängigkeit, Lizenzgrenzen
SolveSpace Constraint-basiert 2D/3D Schnelle interaktive Bedingungen, Mechanismussimulation Kostenlos & Open Source; begrenzte 3D-Fasen und Freiformflächen
SolveSpace Constraint-basiert 2D/3D Schnelle interaktive Bedingungen, Mechanismussimulation Kostenlos & Open Source; begrenzte 3D-Fasen und Freiformflächen
🔗 Weiter vergleichen: Erweitern Sie Ihre Entscheidungstabelle mit dem Vergleich der 24 Modellierungswerkzeuge und dem Leitfaden für mechanische Konstruktion.

Entscheidungsmatrix

Profil Passt OpenSCAD? Begründung
Programmierer / Maker Ja Variablen, Module und Schleifen sind vertraut; schnelle Ergebnisse
Maschinenbauingenieur Bedingt Stark bei Einzelteilen; für Baugruppen und Zeichnungen sind FreeCAD oder Fusion besser
Industriedesigner Nein Organische Flächen, Skizzen und visuelles Feedback fehlen
Lehrende Ja Macht CSG, Koordinaten und Parameter greifbar; kostenlos und portabel
Forschende Ja Textbasiert, reproduzierbar, ideal für offene Hardware
SolveSpace Constraint-basiert 2D/3D Schnelle interaktive Bedingungen, Mechanismussimulation Kostenlos & Open Source; begrenzte 3D-Fasen und Freiformflächen
SolveSpace Constraint-basiert 2D/3D Schnelle interaktive Bedingungen, Mechanismussimulation Kostenlos & Open Source; begrenzte 3D-Fasen und Freiformflächen

Fazit: Das Maß steht in der Zeile

OpenSCAD verwandelt 3D-Modellierung von einer Zeichenfertigkeit in eine Disziplin der Definition. Die Schönheit des Modells liegt nicht in der Schattierung auf dem Bildschirm, sondern darin, wie ehrlich die Zeile wand = 2.0 ist. Wenn dasselbe Teil in drei Größen gebraucht wird, ist eine Variable statt drei Dateien das eigentliche Versprechen dieses Werkzeugs.

Jedes Versprechen hat jedoch eine Grenze: OpenSCAD löst weder organische Formen noch Baugruppenverknüpfungen noch die B-Rep-Auslieferung. Man sollte es nicht als CAD-Werkzeug für alles betrachten, sondern als Compiler für Teile, deren Maße bereits definiert sind.

Zwei Fragen vor der Entscheidung:

  1. Liegt der Wert Ihres Designs in der Schönheit der Oberfläche oder in der Reproduzierbarkeit seiner Maße?
  2. Kann jedes Teammitglied eine .scad-Datei lesen und ändern, oder ist eine visuelle Oberfläche realistischer?
OpenSCAD parametrischer 5x5x5-Würfel mit Fase, berechnet über CSG-Booleans
Konstruktive Festkörpergeometrie (CSG): Parametrischer Fasen-Würfel, berechnet über die OpenSCAD-Engine. Bild: Michael d allen, CC0, via Wikimedia Commons.

Quellen und Prüfung

Versions-, Lizenz-, Plattform- und Funktionsangaben in diesem Test wurden am 7. November 2026 anhand der folgenden Quellen geprüft:

  1. OpenSCAD Offiziell — About: Lizenz, Qt/CGAL/OpenCSG und CSG-Ansatz — openscad.org/about.html
  2. OpenSCAD Offiziell — News: Version 2021.01, Customizer und Thingiverse — openscad.org/news.html
  3. OpenSCAD Offiziell — Downloads: Plattformen, Release Candidates und Manifold — openscad.org/downloads.html
  4. OpenSCAD GitHub — Releases: 2021.01 und Versionsgeschichte — github.com/openscad/openscad/releases
  5. Wikibooks — OpenSCAD User Manual: Vorschau/Render und CGAL — en.wikibooks.org/wiki/OpenSCAD_User_Manual
  6. Wikibooks — OpenSCAD Customizer: Parametersyntax und Thingiverse-Kompatibilität — en.wikibooks.org/wiki/OpenSCAD_User_Manual/Customizer
  7. Wikipedia — OpenSCAD: GPL-2.0-or-later, Plattformen und Manifold — en.wikipedia.org/wiki/OpenSCAD
  8. 3Dnatives — OpenSCAD, the Free and Open-Source 3D Modeler (10. Juni 2024) — 3dnatives.com
  9. Fabbaloo — OpenSCAD Embraces Multicolor 3D Design with New Geometry Engine (8. Januar 2025) — fabbaloo.com
  10. OpenSCAD GitHub — COPYING: GPLv2-Text und CGAL-Ausnahme — github.com/openscad/openscad/blob/master/COPYING
  11. Hackaday — Belfry OpenSCAD Library (BOSL2) (18. Februar 2025) — hackaday.com
  12. Hackaday — Try NopSCADlib for Your Next OpenSCAD Project (15. Juni 2019) — hackaday.com

Das DigiLiner-Redaktionsteam veröffentlicht mit Zwei-Quellen-Prüfung, öffentlichem Korrekturprotokoll und menschlich überwachter KI-Unterstützung. Editorial Policy