Sprachgrundlagen: Syntax, Variablen, Datentypen

LektionOpenSCAD: Einstieg & Spracheca. 3 Min. Lesezeit

Begriffe vorab

  • Anweisung: Eine Zeile, die mit einem Semikolon endet.
  • Variable: Benannter Wert, der beim Übersetzen des Skripts festgelegt wird.
  • Vektor: Geordnete Liste von Werten in eckigen Klammern.
  • Range: Wertebereich in der Form [start:ende] oder [start:schritt:ende].
  • Scope: Gültigkeitsbereich von Variablen, durch geschweifte Klammern begrenzt.

Kommentare und Anweisungen

Kommentare folgen der C++-Schreibweise: // bis Zeilenende und /* mehrzeilig */. Anweisungen enden mit einem Semikolon; Namen unterscheiden Groß- und Kleinschreibung.

Variablen sind keine Variablen

Der überraschendste Punkt: Variablen sind Bindungen zur Übersetzungszeit, keine veränderlichen Speicherplätze. Die Doku sagt: Wird eine Variable mehrfach zugewiesen, gilt nur der zuletzt zugewiesene Wert, und zwar an allen Stellen. Innerhalb desselben Scopes erzeugt das eine Warnung. Zur Laufzeit lässt sich nichts ändern – alle Variablen verhalten sich wie Konstanten. Das FAQ erklärt: OpenSCAD ist eine deklarative, funktionale Sprache; eine Anweisung wird einmal mit den Anfangsbedingungen übersetzt.

Datentypen

  • Zahlen: 64-Bit-Fließkomma, dezimal oder mit PI. Hexadezimale Konstanten nennt die Doku nur für Entwicklungs-Snapshots.
  • Wahrheitswerte: true und false. In Bedingungen gelten als „falsch“: false, 0, -0, "", [] und undef.
  • Zeichenketten: in doppelten Anführungszeichen, mit Escapes wie \", \\, \n, \t.
  • Ranges: [0:5] oder [0:0.5:5]. Mit Doppelpunkten, nicht Kommas – ein Range ist kein Vektor.
  • Vektoren: [1, 2, 3], auch verschachtelt; Zugriff über Index ab 0, die ersten drei Elemente zusätzlich als .x, .y, .z.
  • undef: Startzustand einer Variable oder Ergebnis ungültiger Aufrufe.

Scope

Geschweifte Klammern öffnen einen neuen Scope. Innen zugewiesene Variablen sind außerhalb unsichtbar. Jeder Durchlauf einer for-Schleife bekommt einen eigenen Scope. Seit Version 2015.03 sind Zuweisungen überall erlaubt, nicht nur oberhalb der Module.

breite = 30;          // Variable
hoehe  = breite / 2;  // aus anderer Variable berechnet
masse  = [breite, 20, hoehe];

echo(masse);          // Ausgabe in der Console
echo(masse.x, masse[2]);

cube(masse);

echo schreibt in die Console: [30, 20, 15] und danach 30, 15. Die Reihenfolge der Zuweisungen im Text ist hier egal, weil alles beim Übersetzen aufgelöst wird – aber lies die Regel „letzte Zuweisung gewinnt“ genau, bevor du Werte im Skript überschreibst.

Denke „Konstante mit späterem Wert“, nicht „Variable, die sich ändert“. Wer eine Schleifenvariable hochzählen will, braucht Rekursion oder List Comprehensions.

Zum Selbermachen

  1. Weise einer Variable zwei verschiedene Werte zu und lies die Warnung in der Console.
  2. Lege einen Vektor mit drei Zahlen an und gib .x, .y, .z per echo aus.

Verwandte Themen

OpenSCAD → Die übrigen Lektionen dieser Themenwelt; Informatik: Grundlagen → „Algorithmen und Berechenbarkeit“ für das Denken in Schritten.

Prüfstatus: Belegt (Stand 1. Oktober 2026): Kommentarsyntax, die Regel „letzter Wert gewinnt“, Datentypen (Zahlen, Wahrheitswerte und die Liste der falschen Werte, Zeichenketten, Ranges, Vektoren, undef), Punktnotation, Scope-Regeln (seit 2015.03) und die Erklärung im FAQ wurden gegen die Seiten „General“ und „FAQ“ geprüft. Alle Codebeispiele dieser Lektion wurden mit OpenSCAD 2026.09.18 (lokale Installation) ausgeführt und liefen ohne Fehler und Warnungen. Nicht einzeln belegt: die Aussage zu Hexadezimalkonstanten in Snapshots (nur laut Doku, hier nicht getestet). Außerdem nicht einzeln belegt: die Erklärungen in eigenen Worten, die Beispiele als solche (konstruiert) und die Wertungen.

Quellen

  • OpenSCAD User Manual – General (en.wikibooks.org/wiki/OpenSCAD_User_Manual/General)
  • OpenSCAD User Manual – FAQ (en.wikibooks.org/wiki/OpenSCAD_User_Manual/FAQ)
  • OpenSCAD Cheat Sheet (openscad.org/cheatsheet, bezieht sich auf Version 2021.01)

Alles zu „OpenSCAD: Einstieg & Sprache“