Zum Abschluss gibt es an dieser Stelle eine kompakte Kurzreferenz der wichtigsten OpenSCAD-Funktionen und ihrer Parameter.
circle(
r, // Radius
d // oder Durchmesser
);
square(
size, // ein einzelner Wert erzeugt ein Quadrat,
// ein zweidimensionaler Vektor ein Rechteck
center // wenn "true", dann wird das Rechteck über
// dem Ursprung zentriert
);
polygon(
points, // Feld mit zweidimensionalen Vektoren als Punktmenge
paths, // Optionales Feld mit Punktindizes, wenn das Polygon
// auch innere, negative Flächen besitzt
convexity // Optimierungsparameter für die Vorschau. Bei Darstellungs-
// problemen sukzessive erhöhen. Ein Wert von 10 sollte passen.
);
text(
text, // Der darzustellende Text als Zeichenkette
size, // Die Höhe "normaler" Buchstaben
font, // Die Schriftart als Zeichenkette (s. Projekt 6)
halign, // Die horizontale Ausrichtung als Zeichenkette
// Mögliche Werte: "left", "center", "right"
valign, // Die vertikale Ausrichtung als Zeichenkette
// Mögliche Werte: "top", "center", "baseline", "bottom"
// "baseline" bezeichnet die Grundlinie
spacing, // Faktor, um den Buchstabenabstand zu verändern
direction, // Schreibrichtung. Mögliche Werte:
// "ltr" -> von links nach rechts
// "rtl" -> von rechts nach links
// "ttb" -> von oben nach unten
// "btt" -> von unten nach oben
language, // Sprache. Englisch "en", Deutsch "de", ...
script // Textart. Standard ist "latin"
);
import(
file, // Dateinamen einer `.svg`- oder `.dxf`-Datei
convexity, // Optimierungsparameter für die Vorschau. Bei Darstellungs-
// problemen sukzessive erhöhen. Ein Wert von 10 sollte passen.
layer // Folienname falls es eine `.dxf`-Datei ist
);
projection(
cut // wenn "true", dann wird nachfolgende Geometrie in der X-Y-Ebene
// geschnitten. Ansonsten wird die nachfolgende Geometrie auf die
// X-Y-Ebene projiziert
);
sphere(
r, // Radius
d // oder Durchmesser
);
cube(
size, // ein einzelner Wert erzeugt einen Würfel
// ein dreidimensionaler Vektor erzeugt einen Quader
center // wenn "true", dann wir der Quader im Ursprung zentriert
);
cylinder(
h, // Höhe des Zylinders
r, // Radius, oder alternativ:
r1, // unterer Radius und
r2, // oberer Radius des Zylinders
d, // Durchmesser, oder alternativ:
d1, // unterer Durchmesser und
d2, // oberer Durchmesser des Zylinders
center // wenn "true", dann wird der Zylinder entlang der
// Z-Achse im Ursprung zentriert
);
polyhedron(
points, // Feld mit dreidimensionalen Vektoren
faces, // Feld mit vierdimensionalen Vektoren, die per Indizes
// jeweils vier Punkte aus dem Feld points zu einer
// Fläche zusammenfassen
convexity // Optimierungsparameter für die Vorschau. Bei Darstellungs-
// problemen sukzessive erhöhen. Ein Wert von 10 sollte passen.
);
import(
file, // Dateinamen einer `.stl`, `.off`, `.amf` oder `.3mf`-Datei
convexity // Optimierungsparameter für die Vorschau. Bei Darstellungs-
// problemen sukzessive erhöhen. Ein Wert von 10 sollte passen.
);
surface(
file, // Dateinamen einer `.png`-Datei oder Textdatei
center, // wenn "true", wird das erzeugte Objekt im Ursprung zentriert
invert, // wenn "true", werden die Farben invertiert
convexity // Optimierungsparameter für die Vorschau. Bei Darstellungs-
// problemen sukzessive erhöhen. Ein Wert von 10 sollte passen.
);
linear_extrude(
height, // Höhe der Extrusion
center, // wenn "true", wird die Extrusion entlang der Z-Achse zentriert
twist, // Verdrehung um die Z-Achse in Grad
slices, // Anzahl der Schichten entlang der Z-Achse
scale, // Skalierung entlang der Extrusion. Entweder ein einzelner
// Wert oder ein zweidimensionaler Vektor, der die Skalierung
// in X- und Y-Richtung separat definiert
convexity // Optimierungsparameter für die Vorschau. Bei Darstellungs-
// problemen sukzessive erhöhen. Ein Wert von 10 sollte passen.
)
eine_2D_Form();
rotate_extrude(
angle, // Winkel der Extrusion um die Z-Achse
convexity // Optimierungsparameter für die Vorschau. Bei Darstellungs-
// problemen sukzessive erhöhen. Ein Wert von 10 sollte passen.
)
eine_2D_Form();
translate(
v // ein zwei- oder dreidimensionaler Vektor, der die Verschiebung
// relativ zum Ursprung beschreibt
)
eine_Geometrie();
rotate(
a, // entweder ein einzelner Drehwinkel (in Kombination mit v)
// oder ein dreidimensionaler Vektor, der die Drehwinkel
// um die X-, Y- und Z-Achse beschreibt
v // dreidimensionaler Vektor, der die Drehachse beschreibt,
// wenn in a nur ein Winkel angegeben wird
)
eine_Geometrie();
scale(
v // zwei- oder dreidimensionaler Vektor, der die Skalierung
// der Geometrie in X-, Y- und Z-Richtung beschreibt
)
eine_Geometrie();
resize(
newsize // zwei- oder dreidimensionaler Vektor, der die neuen
// Abmaße der Geometrie in X-, Y- und Z-Richtung beschreibt
)
eine_Geometrie();
mirror(
v // zwei- oder dreidimensionaler Vektor, der die Achse angibt,
// entlang derer die Geometrie gespiegelt werden soll
)
eine_Geometrie();
color(
c, // entweder ein vierdimensionaler Vektor, der die Farbe als
// RGBA mit Werten von 0 bis 1 beschreibt; oder
// ein dreidimensionaler Vektor, der die Farbe als RGB mit
// Werten von 0 bis 1 beschreibt; oder
// eine Zeichenkette, die die Farbe in Hexadezimal mit
// führendem '#'-Zeichen beschreibt; oder
// eine Zeichenkette, die mit einem Farbnamen wie z.B.
// "red" die Farbe beschreibt
alpha // ein Transparenzwert von 0 (transparent) bis 1 (opak)
)
eine_Geometrie();
hull(){
eine_Geometrie(); // Es wird über alle Geometrien der Geometrie-
// menge die konvexe Hülle gebildet.
eine_Geometrie();
...
}
offset(
r, // Ausdehnung in Form eines Kreises mit Radius r, der
// entlang der 2D-Form bewegt wird. Alternativ:
delta, // Distanz der neuen Außenlinie von der ursprünglichen
// Linie. Im Gegensatz zu 'r' werden hier Spitzen nicht
// abgerundet
chamfer // wenn "true", werden Ecken abgeflacht (nur bei delta)
)
eine_2D_Form();
minkowski() {
eine_Geometrie(); // Grundgeometrie
eine_Geometrie(); // Geometrie, die an jeden Punkt der Grund-
// geometrie kopiert wird, um diese mit den
// Punkten der kopierten Geometrie zu erweitern
}
multmatrix(
m // Eine 4x3 oder 4x4 Transformationsmatrix, die die affine
// Transformation der Geometrie beschreibt
)
eine_Geometrie();
union(){
eine_Geometrie(); // Es wird die Boolesche Vereinigung aller
// Geometrien der Geometriemenge gebildet.
eine_Geometrie();
...
}
difference(){
eine_Geometrie(); // Grundgeometrie
eine_Geometrie(); // Alle der Grundgeometrie folgenden Geometrien
// der Geometriemenge werden von der Grundgeometrie
// abgezogen
...
}
intersection(){
eine_Geometrie(); // Es wird der Boolesche Schnitt aller
// Geometrien der Geometriemenge gebildet.
eine_Geometrie();
...
}
for ( i = [start : schritt : stop] ) // Schleifenvariable i läuft von
eine_Geometrie(); // start bis stop mit Schrittweite
// schritt (optional)
for ( v = feld ) // Schleifenvariable v läuft durch
eine_Geometrie(); // alle Elemente des Feldes
for ( i ... , j ... ) // Mehrere Schleifenvariablen
eine_Geometrie(); // werden durch Kommata getrennt
intersection_for( ... ) // gleiche Verwendung wie For-Schleife,
eine_Geometrie(); // jedoch mit Booleschem Schnitt der
// Objekte anstelle einer Booleschen
// Vereinigung
feld = [ for (i = ...) i ]; // Erzeugt ein Feld mittels For-Schleife
absoluter Wert: abs()
Vorzeichen: sign()
Sinus: sin()
Cosinus: cos()
Tangens: tan()
Arkussinus: asin()
Arkuscosinus: acos()
Arkustangens: atan()
Arkustangens 2: atan2()
Abrunden floor()
Runden round()
Aufrunden ceil()
Natürlicher Logarithmus ln()
Logarithmus zur Basis 10 log()
Exponentialfunktion exp()
Potenz pow()
Wurzel sqrt()
Minimum min()
Maximum max()
Länge eines Vektors norm()
Kreuzprodukt zweier Vektoren cross()
Anzahl Elemente eines Feldes len()
Anzahl Buchstaben in Zeichenkette len()
Felder aneinanderhängen concat()
Parameter zu einer Zeichenkette str()
Suche in Feldern search()
Zeichenkonvertierung chr(), ord()
let (x = ...) {
}
feld = rands (
min_value, // kleinster Zufallswert
max_value, // größter Zufallswert
value_count, // Anzahl an Zufallszahlen
seed_value // Initialwert (optional)
)
module test() {
$children // Anzahl der Elemente in
// Geometriemenge
children( i ); // i-te Geometrie der
// Geometriemenge.
// Falls der Parameter fehlt
// werden alle Geometrien
// genommen.
}