Programmieren ist das neue Modellieren: Entwerfen von 3D-Modellen mit OpenSCAD

Post image

Wenn Sie beim Gedanken an 3D-Modellierung sofort Bilder von komplizierten Klick-Orgien in teueren CAD-Programmen vor Augen haben, dann aufgepasst: Es geht auch anders – und das sogar ganz ohne Mausakrobatik! Willkommen bei OpenSCAD, der Programmiersprache für alle, die lieber tippen als zeichnen. Mit OpenSCAD verwandeln Sie Codezeilen in präzise 3D-Modelle, die sich auf Knopfdruck in STL exportieren und dann auf Ihrem 3D-Drucker drucken lassen. Klingt nerdy? Mag sein. Aber auch ziemlich genial, vor allem, wenn man bedenkt, dass die Möglichkeiten fast grenzenlos sind und das Programm kostenlos. In diesem Artikel werfen wir einen Blick darauf, warum OpenSCAD der Geheimtipp für 3D-Druck-Enthusiasten ist und wie Sie damit im Handumdrehen kreative, funktionale und perfekt angepasste Designs erstellen können.

Legen wir los.

Installation

Für die Installation von OpenSCAD gibt es je nach Betriebssystem unterschiedliche Methoden:

  • Windows: Die einfachste Methode ist das Herunterladen der Installationsdatei von der offiziellen OpenSCAD-Website . Alternativ kann man OpenSCAD auch über die Microsoft Store App installieren, was die zukünftigen Updates vereinfacht.
  • macOS: Auch hier lässt sich OpenSCAD direkt von der Website laden. Das DMG-Paket wird heruntergeladen und kann durch einfaches Ziehen der App ins Anwendungen-Verzeichnis installiert werden. Alternativ steht auch ein Homebrew-Cask zur Verfügung, das die Installation per brew install openscad ermöglicht.
  • Linux: Für Debian- und Ubuntu-basierte Systeme ist die Installation über den Paketmanager am einfachsten: sudo apt install openscad. Auf Fedora-basierten Systemen funktioniert sudo yum install openscad. Alternativ kann man OpenSCAD über Snap oder Flatpak installieren, was auf vielen Distributionen funktioniert und Versionen bereitstellt, die oft schneller aktualisiert werden.
  • OpenSCAD kann auch als AppImage für Linux heruntergeladen werden, was eine plattformunabhängige Möglichkeit bietet. Diese Datei wird heruntergeladen, ausführbar gemacht (chmod u+x ) und direkt gestartet. Für alle Installationsvarianten und Abhängigkeiten, die je nach System benötigt werden, lohnt sich ein Blick in die offizielle Dokumentation .

Erste Schritte

Nachdem OpenSCAD erfolgreich installiert wurde, kann man direkt mit dem Programmieren von 3D-Modellen beginnen. Anders als in herkömmlichen CAD-Programmen wird hier kein Design gezeichnet, sondern durch Code in einem Editor-Fenster beschrieben. Das Ergebnis des Codes wird in einem Vorschaufenster in Echtzeit angezeigt, was die Arbeit besonders effizient und präzise macht.

Oberfläche kennenlernen: Nach dem Start von OpenSCAD sieht man die wichtigsten Bereiche des Programms.

  • Editorfenster: Hier wird der Code geschrieben, der das Modell beschreibt.
  • 3D-Ansichtsfenster: Eine Vorschau des Modells, die durch die Taste F5 aktualisiert wird.
  • Konsole: Zeigt Fehler und Rückmeldungen zur Code-Ausführung an, was bei der Fehlersuche hilft.

Ein einfaches Objekt erstellen: Man kann beispielsweise mit einem einfachen Befehl wie cube([10, 10, 10]); beginnen. Dieser Code erzeugt einen Würfel mit einer Kantenlänge von 10 Einheiten in den X-, Y- und Z-Richtungen. Mit F5 wird der Code ausgeführt und das Ergebnis im Vorschaubereich angezeigt.

Transformationen anwenden: OpenSCAD bietet verschiedene Möglichkeiten, Objekte zu manipulieren. Der Befehl translate([20, 0, 0]) verschiebt das nachfolgende Objekt um 20 Einheiten entlang der X-Achse:

translate([20, 0, 0]) {
   cube([10, 10, 10]);
}

Kombinieren von Objekten: Für komplexere Modelle kann man Objekte kombinieren. Die Funktionen union(), difference() und intersection() erlauben es, mehrere Teile zu vereinen, voneinander abzuziehen oder die Schnittmenge zu bilden. Zum Beispiel kann eine Kugel und ein Würfel kombiniert werden:

union() {
   cube([10, 10, 10]);
   translate([5, 5, 10]) sphere(5);
}

Parameter nutzen: OpenSCAD erlaubt die Nutzung von Variablen, um Größe und Position der Objekte flexibel zu gestalten, was bei der Erstellung parametrischer Modelle hilfreich ist:

wuerfelGroesse = 10;
cube([wuerfelGroesse, wuerfelGroesse, wuerfelGroesse]);

Mit diesen Grundlagen kann man sofort loslegen und einfache 3D-Modelle erstellen.

Das OpenSCAD-Tutorial auf Wikibooks ist eine umfangreiche Einführung für Einsteiger und Fortgeschrittene. Es behandelt die grundlegenden Prinzipien der Programmierung von 3D-Modellen in OpenSCAD und bietet Schritt-für-Schritt-Anleitungen zu den wichtigsten Befehlen und Funktionen.

Praxis

Im vorliegenden Praxisbeispiel wollte ich einen einfachen Standfuß für eine Plexiglasplatte konstruieren. Ein Ansatz für die Konstruktion ist, ein Polygon mit dem Schnitt des Fußes zu erstellen und dieses dann zu extrudieren. Das ganze sollte gleich von Anfang an parametrisch sein, um es später einfach anpassen zu können.

tiefe=30;
breite = 40;
hoehe = 12;
abschraegung = 10;
nut_breite = 3;
nut_tiefe = 7;

linear_extrude(height=tiefe) {
    polygon(points=[
        [0, 0],
        [abschraegung, hoehe],
        [breite/2 - nut_breite / 2, hoehe],
        [breite/2 - nut_breite / 2, hoehe - nut_tiefe],
        [breite/2 + nut_breite / 2, hoehe - nut_tiefe],
        [breite/2 + nut_breite / 2, hoehe],
        [breite-abschraegung, hoehe],
        [breite, 0],
        [0, 0]
    ]);
}
Beispiel: Halter für Plexiglasplatte
Beispiel: Halter für Plexiglasplatte

Eine weitere Möglichkeit besteht darin, die Grundform des Fußes zu erzeugen und danach die Nut durch Differenzenbildung zu erzeugen. Dieser Ansatz ist etwas einfacher zu verstehen und zu modifizieren, da die Nut als eigenständiges Objekt betrachtet wird.

tiefe=30;
breite = 40;
hoehe = 12;
abschraegung = 10;
nut_breite = 3;
nut_tiefe = 7;
epsilon=0.001;

difference() {
    linear_extrude(height=tiefe) {
        polygon(points=[
            [0, 0],
            [abschraegung, hoehe],
            [breite-abschraegung, hoehe],
            [breite, 0],
            [0, 0]
        ]);
    }
    translate([breite / 2 - nut_breite / 2,
               hoehe + epsilon - nut_tiefe, -epsilon]) {
        cube([nut_breite, nut_tiefe, tiefe + 2 * epsilon]);
    };
};

Allerdings sehen wir im Code einen kleinen Trick, um die Nut auch wirklich durchgehend auszuschneiden: wir führen ein epsilon ein, das die Differenzbildung sicherstellt, indem es die Nut minimal über die Oberfläche hinausragen lässt. Dieser Trick ist notwendig, da OpenSCAD bei “zu exakten” Schnitten Probleme mit geometrischen Unklarheiten hat.

Beispiel: Halter für Plexiglasplatte
Beispiel: Halter für Plexiglasplatte

Rendering und Export

Nachdem das Modell erstellt wurde, kann es gerendert und exportiert werden. Der Rendering-Prozess erzeugt das Modell in hoher Qualität und zeigt es in der Vorschau an. Der Export erfolgt in das STL-Format, das von den meisten 3D-Druckern unterstützt wird.

Schaltflächen für Vorschau, Rendering, STL-Export und 3D-Druck
Schaltflächen für Vorschau, Rendering, STL-Export und 3D-Druck

Mit der STL-Datei kann das Modell mit Cura oder einem anderen Slicer in gcode für den 3D-Drucker umgewandelt werden.

Das Modell in Cura
Das Modell in Cura

Und am Ende haben wir das gewünschte Ergebnis dann in der Hand:

3D-gedruckter Halter für Plexiglasplatte
3D-gedruckter Halter für Plexiglasplatte

With a little help from AI…

Und es wird noch besser: Da das Modell nun mit Code erstellt wird, kann uns KI, z.B. ChatGPT, dabei helfen, diesen Code für unser Modell aus einer Beschreibung in natürlicher Sprache zu generieren!

Hier ein Beispiel: für eine 16x16 Neopixel LED-Anzeige benötigen wir ein Gitter, das die einzelnen LEDs voneinander trennt, damit auf der mattierten Plexiglas-Oberfläche die einzelnen LEDs besser sichtbar sind. Wir könnten unsere Anforderung dafür so beschreiben:

Für eine 16x16 LED Anzeige benötige ich ein Gitter, das die LEDs voneinander trennt.
Erstelle den OpenSCAD-Code für ein 16x16-Gitter, bestehend aus 16x16 ausgesparten Zellen, 
die von Stegen voneinander getrennt sind. Das Gitter soll 5 mm hoch sein, die Innenabmessungen
jeder Zelle 10 mm x 10 mm, die Stege zwischen den Zellen sollen 0,5 mm breit sein. 
Der Rahmen außen soll 3 mm stark sein.
Bitte parametrisiere die jeweiligen Werte per Variablen, so dass sie leicht änderbar sind.
Nutze den Espilon-Trick um sicherzustellen, dass die Zellen auch wirklich durchgehend ausgespart sind.

Das Ergebnis überzeugt:

16x16 Gitter, generiert mit ChatGPT
16x16 Gitter, generiert mit ChatGPT

Auch hier helfen uns die Prinzipien und Best Practices des Prompt Engineering:

  • Zieldefinition: Klar und eindeutig definieren, was erreicht werden soll (und das ist oft gar nicht so einfach).
  • Kontext: Relevante Hintergrundinformationen bereitstellen, ggf. für welchen Zweck benötige ich das Modell.
  • Klarheit: Vermeiden von Mehrdeutigkeit durch präzise Sprache - relevante Details und Anforderungen klar benennen.
  • Details: Spezifische Anweisungen, um das Ergebnis einzugrenzen, ggf. Hinweise wie das Ergebnis erreicht werden soll.
  • Erwartetes Format: Klar spezifizieren, welches Format oder welche Struktur das Ergebnis haben soll - in diesem Fall OpenSCAD.

Meist muss man die Beschreibung noch iterativ verfeinern, um das gewünschte Ergebnis zu erhalten, da die Beschreibung in natürlicher Sprache oft nicht präzise genug ist bzw. vorher nicht erkenntlich ist, welche Details relevant sind bzw. dass die Beschreibung missverständlich sein kann.

Die Modellierung per Code in OpenSCAD hat damit noch einen weiteren Vorteil: die Möglichkeit der Erstellung von Modellen durch die Beschreibung in natürlicher Sprache, die wir dann mit der Hilfe von KI in den Code der Modelle übertragen können.

Fazit

OpenSCAD ist ein mächtiges Werkzeug für alle, die gerne programmieren und 3D-Modelle erstellen. Die Kombination aus Code und Vorschau ermöglicht eine schnelle und präzise Modellierung, die besonders für parametrische Designs und Prototypen geeignet ist. Die Lernkurve ist zwar etwas steiler als bei herkömmlichen CAD-Programmen, aber die Möglichkeiten sind nahezu unbegrenzt. Mit etwas Übung und Kreativität lassen sich erstaunliche Modelle erstellen, die manuell nur aufwendig zu modellieren wären.

Zudem werden die Modelle als Code gespeichert, der auch in einem Versionskontrollsystem wie Git perfekt verwaltet werden kann. Somit lassen sich auch Änderungen und Varianten leicht nachvollziehen.

Probieren Sie es aus und lassen Sie Ihrer Fantasie freien Lauf!

You May Also Like

Agent Smith - übernehmen Sie?

Agent Smith - übernehmen Sie?

Welche Auswirkungen hat die KI auf die Arbeit agiler Teams in der Software-Entwicklung? Werden wir durch Tools ergänzt oder übernimmt Agent Smith? Wir verschaffen uns einen Überblick über die aktuelle Entwicklung und Trends in der KI und wie agentenbasierten Workflows unsere Arbeit verändern könnten.