# OpenSCAD Tutorial ## Einleitung OpenSCAD ist eine freie CAD-Software auf einer textbasierten Programmiersprache mit der 3D-Modelle erzeugt werden. Die Objekte bestehen aus einfachen geometrischen Grundkörpern und werden mit Transformationen und Modifikationen zu einem komplexen 3D-Modell vereinigt. Die Modellierung basiert auf der CSG-Technik (Constructive Solid Geometry). OpenSCAD ist verfügbar für Windows, Linux, OS X, FreeBSD und OpenBSD. Als Dateiformat wird eine einfache Textdatei mit der Endung \*.scad genutzt. Im Gegensatz zu den meisten anderen CAD-Programmen steht hier also ein komplett freies Dateiformat zur Verfügung. ## Installation Der Download von OpenSCAD steht auf der Webseite http://www.openscad.org/downloads.html zur Verfügung. ## OpenSCAD starten Nach dem Start von OpenSCAD wird typischerweise ein dreigeteiltes Fenster angezeigt: 1. Ein einfacher Texteditor für die Bearbeitung des Programms (Eingabe), 2. Ein Bereich für die graphische Ausgabe zum Betrachten des Ergebnisses, 3. Ein Bereich, in dem Fehler- und Statusmeldungen angezeigt werden (Verarbeitung). 4. Ein Bereich für die Konfiguration und Anpassung des Models (Voreingestellt ist der Customizer ausgeblendet). [![oc.png](https://wiki.oberlab.de/uploads/images/gallery/2025-03/scaled-1680-/fjoLMqTF5FMuPkDB-oc.png)](https://wiki.oberlab.de/uploads/images/gallery/2025-03/fjoLMqTF5FMuPkDB-oc.png) ## Neben der Texteingabe im Editor stehen folgende Programm-Funktionen zur Verfügung Im Editor-Bereich (1)
**Interaktion****Wirkung**
F4Neu laden und Vorschau
F5Vorschau, Übersetzung (Kompilieren)
F6Rendern, für STL-Export notwendig
Im Grafik-Bereich (2)
**Interaktion****Wirkung**
Linke MaustasteModell drehen
Rechte MaustasteModell verschieben
MausradZoomen
## OpenSCAD Befehle
Eine Kugel zeichnen
```java sphere(10); ``` [![oc01.png](https://wiki.oberlab.de/uploads/images/gallery/2025-03/scaled-1680-/RFcuPg88xLDUCaiJ-oc01.png)](https://wiki.oberlab.de/uploads/images/gallery/2025-03/RFcuPg88xLDUCaiJ-oc01.png)
Kugel mit 60 Fragmente
```java $fn=60; sphere(10); ``` [![oc02.png](https://wiki.oberlab.de/uploads/images/gallery/2025-03/scaled-1680-/jBmEKRCUgLJJtVNE-oc02.png)](https://wiki.oberlab.de/uploads/images/gallery/2025-03/jBmEKRCUgLJJtVNE-oc02.png)
Kugel mit 3 Fragmente
```java $fn=3; sphere(10); ``` [![oc03.png](https://wiki.oberlab.de/uploads/images/gallery/2025-03/scaled-1680-/z6La9ifp7ZHSeZQ0-oc03.png)](https://wiki.oberlab.de/uploads/images/gallery/2025-03/z6La9ifp7ZHSeZQ0-oc03.png)
Einen Zylinder zeichnen
```java $fn=60; cylinder (20,10); ``` [![oc04.png](https://wiki.oberlab.de/uploads/images/gallery/2025-03/scaled-1680-/KKapphijtcKWwqof-oc04.png)](https://wiki.oberlab.de/uploads/images/gallery/2025-03/KKapphijtcKWwqof-oc04.png)
Einen Zylinder zeichnen
```java $fn=60; cylinder (20,10,10); ``` [![oc05.png](https://wiki.oberlab.de/uploads/images/gallery/2025-03/scaled-1680-/zxP3iIc4N22KvzTY-oc05.png)](https://wiki.oberlab.de/uploads/images/gallery/2025-03/zxP3iIc4N22KvzTY-oc05.png)
Einen Würfel zeichnen
```java $fn=60; cube (15); ``` [![oc06.png](https://wiki.oberlab.de/uploads/images/gallery/2025-03/scaled-1680-/3aJxSQ8eExB9U3GT-oc06.png)](https://wiki.oberlab.de/uploads/images/gallery/2025-03/3aJxSQ8eExB9U3GT-oc06.png)
Einen Würfel zeichnen
```java $fn=60; cube (15,center=true); ``` [![oc07.png](https://wiki.oberlab.de/uploads/images/gallery/2025-03/scaled-1680-/vc974cSVDBtTfNhp-oc07.png)](https://wiki.oberlab.de/uploads/images/gallery/2025-03/vc974cSVDBtTfNhp-oc07.png)
Würfel und Kugel addieren
```java $fn=60; cube (15, center=true); sphere(10); ``` [![oc08.png](https://wiki.oberlab.de/uploads/images/gallery/2025-03/scaled-1680-/Y0BP1xNKDw3mWbpQ-oc08.png)](https://wiki.oberlab.de/uploads/images/gallery/2025-03/Y0BP1xNKDw3mWbpQ-oc08.png)
Würfel und Kugel subtrahieren
```java $fn=60; difference(){ cube (15, center=true); sphere(10); } ``` [![oc09.png](https://wiki.oberlab.de/uploads/images/gallery/2025-03/scaled-1680-/CNyPnRf781U4EIqo-oc09.png)](https://wiki.oberlab.de/uploads/images/gallery/2025-03/CNyPnRf781U4EIqo-oc09.png)
Kugel, Würfel und Zylinder
```java $fn=60; cube (15, center=true); sphere(10); cylinder (20,5,5,center=true); ``` [![oc10.png](https://wiki.oberlab.de/uploads/images/gallery/2025-03/scaled-1680-/nVz1TKaOBcaw2FD3-oc10.png)](https://wiki.oberlab.de/uploads/images/gallery/2025-03/nVz1TKaOBcaw2FD3-oc10.png)
Kugel und Würfel addiert, der ist Zylinder subtrahiert
```java $fn=60; difference(){ union(){ cube (15, center=true); sphere(10); } cylinder (20,5,5,center=true); } ``` [![oc11.png](https://wiki.oberlab.de/uploads/images/gallery/2025-03/scaled-1680-/SrSXQGiNlaLD372a-oc11.png)](https://wiki.oberlab.de/uploads/images/gallery/2025-03/SrSXQGiNlaLD372a-oc11.png)
Dm als Durchmesser-Variable
```java $fn=60; Dm =3; difference(){ union(){ cube (15, center=true); sphere(10); } cylinder (20,Dm,Dm,center=true); } ``` [![oc12.png](https://wiki.oberlab.de/uploads/images/gallery/2025-03/scaled-1680-/YflfKi92Xt2U52pr-oc12.png)](https://wiki.oberlab.de/uploads/images/gallery/2025-03/YflfKi92Xt2U52pr-oc12.png)
Eine zweite Kugel hinzugügen
```java $fn=60; Dm =3; difference(){ union(){ cube (15, center=true); sphere(10); } cylinder (20,Dm,Dm,center=true); } translate ([0,0,17]) sphere(10); ``` [![oc13.png](https://wiki.oberlab.de/uploads/images/gallery/2025-03/scaled-1680-/vFyM74I3Nlf7awQZ-oc13.png)](https://wiki.oberlab.de/uploads/images/gallery/2025-03/vFyM74I3Nlf7awQZ-oc13.png)
Die zweite Kugel subtrahieren
```java $fn=60; Dm =3; difference(){ union(){ cube (15, center=true); sphere(10); } cylinder (20,Dm,Dm,center=true); translate ([0,0,17]) sphere(10); } ``` [![oc14.png](https://wiki.oberlab.de/uploads/images/gallery/2025-03/scaled-1680-/Vf0x8SKP9p9n8B5S-oc14.png)](https://wiki.oberlab.de/uploads/images/gallery/2025-03/Vf0x8SKP9p9n8B5S-oc14.png)
Mit rotate einen zweiten Durchbruch erzeugen
```java $fn=60; Dm =3; difference(){ union(){ cube (15, center=true); sphere(10); } cylinder (20,Dm,Dm,center=true); translate ([0,0,17]) sphere(10); rotate([90, 0, 0]) cylinder (20,Dm,Dm,center=true); } ``` [![oc15.png](https://wiki.oberlab.de/uploads/images/gallery/2025-03/scaled-1680-/1432rdvgHE7piisR-oc15.png)](https://wiki.oberlab.de/uploads/images/gallery/2025-03/1432rdvgHE7piisR-oc15.png)