^
brixelweb.de OpenSCAD-Menu
[ https://openscad.org/ ]

Die 2D-Elemente in der Übersicht

Nach erfolgreichen Einstieg in die 3D-Welt der Objekte, gehen wir zum Ursprung zurück. Auch mit 2D kann OpenSCAD arbeiten …. und damit noch so einiges mehr anstellen und erzeugen!

Alle 2D-Objekte starten, wie die 3D-Objekte auch, im Nullpunkt des Koordinatensystems.

Damit die 2D-Objekte sichtbar werden, haben sie alle eine Höhe von 1.


square( Größe );      // ein Quadrat

Ein Grundbaustein fast aller Objekte ist ein Quadrat oder Rechteck.

Der Aufruf kann über verschiedene Arten erfolgen:

square(10);   // ein Quadrat mit 10mm
// oder
square(size = 10);


ergibt ein Quadrat mit 10 mm Kantenlänge am Schnittpunkt der Achsen X und Y.

Die Parameter sind:
(size = ....)
bei nur einer Angabe eines Maßes wird ein Quadrat mit der genannten Kantenlänge erzeugt.
(center = ....)
false der erste positive Wert im Array wird auf den Wert (0,0,0) im Koordinatensystem gesetzt. Dies ist die eingestellte Vorgabe, daher kann es auch weg gelassen werden.
true das Element wird zentriert im Mittelpunkt (0,0,0) dargestellt.

square(10); oder
square(size = 10); oder auch
square(size = 10, center = false); wird zu:


Folgende Eingaben sind möglich: (Quadrat mit 10mm)

// Auf 0,0,0 gesetzt
square(10);
// oder
square(size = 10);
// oder
square(10, false);

// zentrierte Ausgabe
square(10, true);
// oder
square(10, center=true);
// oder
square(size=10, center=true);


Jede Zeile erzeugt ein Quadrat mit einer Kantenlänge von 10.
Eigentlich ist die Bezeichnung center = false unnötig, da dies die Voreinstellung ist! Daher kann diese Angabe weggelassen werden.

square(size = 10, center = true); oder square(10, true);
eine zentrierte Ausgabe:


square = ([x, y], center = true);        // ein Rechteck

Ein Rechteck besitzt zwei Angaben für seine Größe.
Diese werden im Koordinatensystem in der Reighenfolge X und Y angegeben.

Ferner kann optional die zentrierte Ausgabe gewählt werden

Der Aufruf wird über verschiedene Arten erzielt:

square([10, 20]);   // ein Rechteck
// oder
square([10,20],false);
// oder
square([10,20],center=false);
// oder
square(size = [10, 20], center = false);
	


ergibt ein Rechteck mit 10 und 20 mm Kantenlänge am Schnittpunkt aller Achsen.

Zu beachten ist, daß bei zwei Wertangaben diese zusätzlich in eckige Klammern [ ] angegeben werden!

square([10, 20]);
wird zu:

Bei den 2 Angaben im Array [x, y] entsteht ein Rechteck mit den Ausmaßen in X = 10 und Y = 20 mm.


Auch hier gilt:
(center = ....)
false der erste positive Wert im Array wird auf den Wert (0,0,0) im Koordinatensystem gesetzt. Dies ist die eingestellte Vorgabe, daher kann es auch weg gelassen werden.
true das Element wird zentriert im Mittelpunkt von (0,0,0) dargestellt.

square([10,20],true);
// oder
square([10,20],center=true);
// oder
square(size = [10, 20], center = true);
	

square([10, 20], center=true);
wird zu:


circle = (r=Radius | d=Durchmesser);       // der Kreis

Der Kreis besitzt nur eine Angabe für die Größe.
Entweder r als Radius oder d als Durchmesser. Es ist auf die kleine Schreibweise zu achten!

Die zentrierte Ausgabe im Nullpunkt gilt beim Kreis (wie auch bei der Kugel) als Standard!

circle(10);   // ein Kreis
   // oder
circle(r=10);
   // oder
circle(d=20);	
	


ergibt einen Kreis mit dem Radius von 10, also einem Durchmesser von 20, von ihrem Mittelpunkt aus immer am Schnittpunkt aller Achsen.

circle(10);
wird zu:


resize / scale ([ X-Richtung, Y-Richtung ]);       // eine Ellipse

Die Ellipse besteht aus einem Kreis, der mittels "scale" oder "resize" bearbeitet wird. Dadurch können die Ausrichtungen in X- und Y-Achse ungleich angegeben werden.

"resize([X, Y]) circle(n);" beschreibt die neuen Werte in X und Y-Ausdehnung von "n" in ganzen Zahlen.

"scale([X, Y]) circle(n);" beschreibt die Skalierung vom "n"-Wert des Kreises

Die zentrierte Ausgabe im Nullpunkt gilt bei der Ellipse (wie auch beim Kreis und der Kugel) als Standard!

 // eine Ellipse
resize([40, 20]) circle(60);  
   // oder
resize([40, 20]) circle(d=30);
   // oder
scale([.6667, .3334]) circle(d=60);
	


ergibt eine Ellipse mit dem X-Wert von 40 und einem Y-Wert von 20.

resize([40, 20]) circle(60);
wird zu:

Am Leichtesten wird die Ellipse mittels "resize" dargestellt.
Hier werden die fertigen Ausgangswerte für X und Y angegeben.
Bei z.B. resize([40, 20]) wird bereits für die X-Ausdehnung 40 (von +20 bis -20) und für Y die 20 (von +10 bis -10) angegeben - unabhängig vom nachfolgenden Kreis.

Bei "scale" muss vorher ausgerechnet werden, welche Skalierung angegeben werden soll.

Im Beispiel von "scale([.6667, .3334]) circle(d=60);" steht für den X-Wert "[.6667, ". Also ".6667" entsprechen der deutschen Schreibweise 0,6667. Die führende Null vor dem Komma, (bzw. dem Punkt!), entfällt komplett! Der X-Wert entsteht somit aus 0,6667 * 60 (= dem Kreisdurchmesser) = 40,002. Dies ist der Wert für X.
Der Y-Wert ", .3334]" entsprechen also 0,3334. Dies mit 60 multipliziert ergibt 20,004. Dies entspricht dann dem Y-Wert als Ausdehnung des Kreises.


Wird das zu ändernde Objekt vergrößert statt verkleinert, so kommt es zu unliebsamen Erscheinungen: wird die Anzahl der Fragmente nicht hochgesetzt, so wird das Runde als Ecke dargestellt

resize([20,10]) circle(d=5);

$fn=100;
resize([20,10]) circle(d=5);

$fn= Wert;      // einfache Poygone/Vielecke

Einfache, regelmäßige Polygone bestehen aus einem Kreis, der mittels "$fn" die Anzahl der Seiten bestimmt. Dadurch können unterschiedliche Polygone erstellt werden.

 // Polygone:
translate([  0, 0]) circle(20,$fn=3);
translate([ 50, 0]) circle(20,$fn=4);
translate([100, 0]) circle(20,$fn=5);
translate([150, 0]) circle(20,$fn=6);
translate([200, 0]) circle(20,$fn=8);
translate([250, 0]) circle(20,$fn=12);
	

... ergibt eine Reihe von Polygonen mit unterschiedlichen Seitenanzahlen:

"circle(20,$fn=3);" ergibt einen Kreis mit drei Seiten (der erste in der Reihe). "circle(20,$fn=5);" ergibt einen Kreis mit 5 Ecken, der dritte in der Reihe, und so fort.

Hier wird nun sehr schnell klar, dass je höher der Wert von "$fn" ist, desto feiner die Auflösung nicht nur in der Darstellung im Vorschaufenster - sondern auch beim Ausdruck des 3D-Druckers - sein wird!