AA_cad_ademdemir_123rf_2711101.jpg

© Ademdemir, 123RF

Mit OpenSCAD dreidimensionale Strukturen modellieren

Am Stück oder in Scheiben

Ein wenig Schulgeometrie macht noch keinen CAD-Experten. Mit OpenSCAD sinkt die Einstiegshürde jedoch beträchtlich.

Wer gelernt hat, dass der Radius eine Kugel definiert oder Höhe und Durchmesser der Grundfläche einen Kegel, der fühlt sich in OpenSCAD sofort zu Hause. Mit der Software entwerfen Sie nahezu im Handumdrehen Strukturen, die selbst ein 3D-Drucker versteht. Im Test für diesen Artikel entstanden die Vorlage für die Kappe eines USB-Sticks, das Modell eines Flugzeugs, Lego-Steine und ein Ersatzschlüssel.

Die gängigen Distributionen bieten OpenSCAD direkt zur Installation an, in aller Regel in der Version von 2014. Die Homepage [1] erläutert den Download der aktuelleren Version 2015.03-1. Dieser lohnt sich schon deswegen, weil diese die Möglichkeit bietet, Textobjekte ohne Umwege einzubinden.

Einstieg

Nach dem Start öffnet sich ein Fenster mit einem Bereich für die Eingabe (links), einem für die Ausgabe (rechts oben) sowie einer Konsole. Einige Schalter bieten grundlegende Funktionen an: Über dem Editorfenster beziehen sich die linken Icons auf typische Aufgaben wie das Öffnen oder Speichern von Dateien und typische Aktionen eines Editors, wie Rückgängigmachen, Wiederholen oder Einrücken.

Die beiden Würfel-Icons starten das Programm entweder für den CSG-Schnellentwurf, falls ein STL-Export ansteht, oder für das Rendern mittels CGAL. Die gleichen Aktionen lösen Sie mit [F5] und [F6] aus. Mit einem ersten, kleinen Programm probieren Sie die Schaltflächen unter dem Ausgabefenster aus. Wie die meisten Programmiersprachen lehnt sich jene von OpenSCAD ans Englische an.

Um eine Kugel zu zeichnen, tippen Sie den Befehl sphere(); in den Editor. Vergessen Sie bei der Eingabe von Befehlen nicht das Semikolon, das jedes Kommando abschließt. Drücken Sie [F5] oder klicken Sie auf das Würfel-Icon mit den zwei Zacken, so führt die Software das einzeilige Programm aus. Es erscheint rechts ein blaues, eckig wirkendes Gebilde (Abbildung 1).

Abbildung 1: Über einen einzeiligen Befehl erzeugen Sie die Grundform für einen Körper.

Über die Icon-Leiste verändern Sie den Blickwinkel auf das Objekt, drehen es und ändern die Darstellung zwischen orthografischer (Fluchtpunkt im Unendlichen) und perspektivischer Projektion (entfernte Objekte erscheinen kleiner). Am einfachsten verschieben Sie den Blickwinkel mit der Maus: Das Scrollrad ändert den Abstand, die linke Maustaste den Blickwinkel, die rechte die Position. Die Koordinaten der imaginären Kamera gibt das Programm in der Statusleiste unten aus.

Das erste Programm zeigt bereits einige Eigenarten von OpenSCAD: Die meisten Variablen belegt das Programm bereits mit Vorgabewerten. Geben Sie keinen Radius oder keine Position des Körpers an, geht das Programm von einer Kugel mit einem Durchmesser von einer Einheit im Koordinatenursprung aus.

Die Software kennt keine gekrümmten Flächen. Stattdessen nähert sie sich durch ein Gitternetz aus Dreiecken der gewünschten Form an. Der Menüpunkt View | show_edges blendet das Netz ein. Über die Variable $fn steuern Sie die Anzahl der Kanten:

$fn=200;
sphere();

Nun dauert das Rendern zwar etwas länger, aber Sie erhalten eine fast perfekte Kugel. Anstatt die Variable global zu ändern, bietet die Applikation die Möglichkeit, diese auf die eine Kugel zu beschränken:

sphere();
translate([2,0,0]) sphere(r=2, $fn=200);

Sie sehen nicht nur die grob gerenderte Kugel im Ursprung, sondern neben ihr eine wohlgeformte Kugel mit dem Radius r=2 Einheiten (Abbildung 2). Damit sich die Kugeln nicht überdecken, verschiebt der Befehl translate() sie um den Vektor mit den Koordinaten x, y und z, wobei im konkreten Fall der Wert für x 2 Einheiten entspricht.

Abbildung 2: Durch das Verschieben des Ursprungs über den Befehl translate() stellen Sie zwei Objekte nebeneinander.

Viele Befehle wirken auf ein nachfolgendes Objekt. Stände hinter dem Translate-Befehl ein Semikolon, würde die Anweisung hier abbrechen und sich nicht auf die nachfolgende Kugel erstrecken.

Im nächsten Beispiel geht es um die Konstruktion eines Bleistifts. Er besteht aus einem Zylinder der Höhe h=50 und dem Radius r=5. Da er sechseckig sein soll, beschränken Sie mit $fn=6 das Rendern auf sechs Flächen:

cylinder(h=50, r=5, $fn=6);

Als Kegel dient ein Zylinder mit einem oberen Radius von r2=5, einem unteren Radius von r1=0 und einer Höhe von h=15. Damit die Software alle Objekte außer dem Schaft des Bleistifts mit großer Genauigkeit glättet, setzen Sie die Variable $fn global auf 50, indem Sie sie den entsprechenden Zeilen voranstellen:

$fn=50;
cylinder(h=15, r1=0, r2=60);

Mit dem Kegel erzeugen Sie die Spitze des Bleistifts. Der Befehl intersection() beschränkt die Ansicht auf die Elemente, die gleichzeitig zum Kegel und zum Griff gehören. Der Befehl rotate() neigt den Stift (Abbildung 3). Wie bei translate() wirkt der Befehl auf das nachfolgende Element, deshalb schließt er nicht mit einem Semikolon ab.

Abbildung 3: Über einen Kegel und einen Zylinder erzeugen Sie die Grundform eines Bleistifts.

Übergeben Sie, wie im Beispiel, nur einen Vektor an die Funktion rotate(), so steht der erste Wert für den Winkel einer Rotation um die X-Achse, der zweite für die sich daran anschließende Rotation um die Y- und die Z-Achse. Übergeben Sie der Funktion rotate() zusätzlich eine Angabe für einen Winkel, interpretiert er den Vektor als Drehachse.

Seit der Version 2015 kennt das Programm den Befehl text(), der zweidimensionalen Text erzeugt. Erkennen lässt sich dieser nur im CGAL-Renderer, da die Schnellansicht den Text behelfsmäßig auf eine Dicke von einer Einheit extrudiert. Über den Befehl linear_extrude() tritt er tatsächlich plastisch hervor.

Druckvorlage

Mit wenigen Programmzeilen erstellen Sie über die Software Objekte, die unter anderem als Vorlage für einen 3D-Drucker taugen. Als Beispiel soll uns hier eine Kappe für einen USB-Stick dienen. Sie erfordert nicht mehr als drei Befehle: einem Quader, der die äußere Abmessung der Kappe festlegt, einem Quader, dessen Größe der des USB-Steckers entspricht sowie dem Befehl difference(), der beide Blöcke voneinander abzieht. Listing 1 zeigt die entsprechenden Befehle, Abbildung 4 das Ergebnis.

Listing 1

difference(){
  translate([0,0,5]) color("red", 0.8) cube([5.5, 13, 12], center=true);
  translate([0,0,15]) color("grey", 1) cube([4.5, 12, 30], center=true);
}
Abbildung 4: Aus zwei Quadern erzeugen Sie eine einfache Kappe für einen USB-Stick.

Das Dateiformat STL verstehen die meisten Slice-Programme für 3D-Drucker. Das Abspeichern einer Datei mit einer entsprechenden Vorlage setzt voraus, dass zunächst der CGAL-Renderer erfolgreich durchläuft. Dabei gehen naturgemäß die Farbinformationen verloren. Anschließend speichern Sie das Ergebnis entweder über das STL-Icon oder über File | Export  Export_STL.

Die Software kennt keine Dimensionen, sondern nur Einheiten. Das Programm, das die Daten weiter verarbeitet, erwartet deshalb den Hinweis, ob die Weite der Kappenöffnung von 4,5 mal 12 Zoll oder Millimeter beträgt, und ob möglicherweise ein Skalierungsfaktor zum Anpassen der Schrumpfung zum Zug kommt. Stellen Sie den Befehl projection(cut=true) voran, bestimmt OpenSCAD die Querschnittsfläche innerhalb der X/Y-Ebene. So kontrollieren Sie die Wandstärke der Kappe.

Um den Verwendungszweck der Kappe zu veranschaulichen, erweitern Sie das Skript um eine Schemazeichnung des USB-Sticks. Der Befehl color() färbt Objekte ein. Er versteht Namen von Farben in Englisch oder in Form eines Vektors, dessen drei Komponenten die Anteile für Rot, Grün und Blau bestimmen. So erzeugt color([1,1,0]) die Farbe Gelb. Die Transparenz fügen Sie als vierte Koordinate hinzu oder als einzelne Zahl, wenn Sie die Farbe benennen, etwa color("yellow", 0.5).

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 7 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Programm der Tübix steht
    Am 13. Juni findet der Linuxtag in Tübingen, kurz Tübix, statt. Die Veranstalter haben jetzt das recht umfangreiche Programm veröffentlicht.
  • Fedora 19 Beta veröffentlicht

    Das Fedora-Projekt hat leicht verspätet die Beta für die kommende Version 19 seiner Linux-Distribution veröffentlicht.
  • Ubuntu, Linux Mint und Knoppix
    Ubuntu, Linux Mint und Knoppix basieren auf der Distribution Debian – wir verraten Tricks und Kniffe, welche die Arbeit auf diesen Systemen angenehmer machen.
  • Easy Programming
    Die Java-Software Processing verwandelt auch Nicht-Programmierer in Computerkünstler: Damit erzeugen Sie schnell und einfach bewegliche Figuren und stellen sie als Flash-ähnliches Applet ins Netz.
  • Neues auf den Heft-DVDs
    Nur mit dem optimalen System und der richtigen Software nutzen Sie das volle Potenzial Ihres Rechners. Mit der Heft-DVD erhalten Sie nicht nur topaktuelle Distributionen, sondern auch die passenden Programme zu den Artikeln.
Kommentare

Infos zur Publikation

LU 12/2017: Perfekte Videos

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Huawei
Pit Hampelmann, 13.12.2017 11:35, 1 Antworten
Welches Smartphone ist für euch momentan das beste? Sehe ja die Huawei gerade ganz weit vorne. Bi...
Fernstudium Informatik
Joe Cole, 12.12.2017 10:36, 2 Antworten
Hallo! habe früher als ich 13 Jahre angefangen mit HTML und später Java zu programmieren. Weit...
Installation Linux mint auf stick
Reiner Schulz, 10.12.2017 17:34, 3 Antworten
Hallo, ich hab ein ISO-image mit Linux Mint auf einem Stick untergebracht Jetzt kann ich auch...
Canon Maxify 2750 oder ähnlicher Drucker
Hannes Richert, 05.12.2017 20:14, 4 Antworten
Hallo, leider hat Canon mich weiterverwiesen, weil sie Linux nicht supporten.. deshalb hier die...
Ubuntu Server
Steffen Seidler, 05.12.2017 12:10, 1 Antworten
Hallo! Hat jemand eine gute Anleitung für mich, wie ich Ubuntu Server einrichte? Habe bisher...