Kurzreferenz

Zum Abschluss gibt es an dieser Stelle eine kompakte Kurzreferenz der wichtigsten OpenSCAD-Funktionen und ihrer Parameter.

2D Geometrie 🔗

Kreis 🔗

circle(
	r,  	// Radius	
	d   	// oder Durchmesser
);

Rechteck 🔗

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 🔗

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(
	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"
);

Importieren von Geometrien 🔗

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
);

Projektion 🔗

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
);

3D Geometrie 🔗

Kugel 🔗

sphere(
	r,		// Radius
	d 		// oder Durchmesser
);

Quader 🔗

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
);

Zylinder 🔗

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 🔗

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.
);

Importieren von Geometrien 🔗

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.
);

Oberfläche aus Bilddaten 🔗

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.
);

Transformationen 🔗

Lineare Extrusion 🔗

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();

Rotationsextrusion 🔗

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();

Verschiebung 🔗

translate(
	v 		// ein zwei- oder dreidimensionaler Vektor, der die Verschiebung 
			// relativ zum Ursprung beschreibt
)
eine_Geometrie();

Rotation 🔗

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();

Skalierung 🔗

scale(
	v 		// zwei- oder dreidimensionaler Vektor, der die Skalierung 
			// der Geometrie in X-, Y- und Z-Richtung beschreibt
)
eine_Geometrie();

Neubemessung 🔗

resize(
	newsize 	// zwei- oder dreidimensionaler Vektor, der die neuen
				// Abmaße der Geometrie in X-, Y- und Z-Richtung beschreibt
)
eine_Geometrie();

Spiegelung 🔗

mirror(
	v 		// zwei- oder dreidimensionaler Vektor, der die Achse angibt,
			// entlang derer die Geometrie gespiegelt werden soll
)
eine_Geometrie();

Farbe 🔗

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();

Konvexe Hülle 🔗

hull(){
	eine_Geometrie(); 	// Es wird über alle Geometrien der Geometrie-
						// menge die konvexe Hülle gebildet.

	eine_Geometrie();

	...
}

Ausdehnung und Schrumpfung 🔗

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-Summe 🔗

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
}

Affine Transformation 🔗

multmatrix(
	m 		// Eine 4x3 oder 4x4 Transformationsmatrix, die die affine
			// Transformation der Geometrie beschreibt
)
eine_Geometrie();

Boolesche Operationen 🔗

Vereinigung 🔗

union(){
	eine_Geometrie(); 	// Es wird die Boolesche Vereinigung aller 
						// Geometrien der Geometriemenge gebildet.

	eine_Geometrie();

	...
}

Differenz 🔗

difference(){
	eine_Geometrie(); 	// Grundgeometrie

	eine_Geometrie(); 	// Alle der Grundgeometrie folgenden Geometrien
						// der Geometriemenge werden von der Grundgeometrie
						// abgezogen

	...
}

Schnitt 🔗

intersection(){
	eine_Geometrie(); 	// Es wird der Boolesche Schnitt aller 
						// Geometrien der Geometriemenge gebildet.

	eine_Geometrie();

	...
}

Schleifen 🔗

For-Schleife 🔗

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

For-Schleife (Boolescher Schnitt) 🔗

intersection_for( ... )		// gleiche Verwendung wie For-Schleife,
eine_Geometrie();			// jedoch mit Booleschem Schnitt der
							// Objekte anstelle einer Booleschen
							// Vereinigung

Generative For-Schleife 🔗

feld = [ for (i = ...) i ];		// Erzeugt ein Feld mittels For-Schleife

Mathematische Funktionen 🔗

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()

Sonstige Funktionen 🔗

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()

Lokale Variablendefinition 🔗

let (x = ...) { 	

}

Zufallszahlen 🔗

feld = rands (
	min_value,		// kleinster Zufallswert
	max_value,		// größter Zufallswert
	value_count,    // Anzahl an Zufallszahlen
	seed_value      // Initialwert (optional)
)

Zugriff auf nebenstehende Geometriemenge 🔗

module test() {

	$children			// Anzahl der Elemente in 
						// Geometriemenge

	children( i );		// i-te Geometrie der
						// Geometriemenge.
						// Falls der Parameter fehlt 
						// werden alle Geometrien
						// genommen.

}
← Was fehlt ?