Was gibt es jetzt am Anfang als wichtigste Verständnis Themen zu beschreiben:
OpenSCAD arbeitet erst mal mit simplen Objekten die man
Union : Kombinieren kann
difference : Teil n vom ersten Teil abziehen
Intersection : Eine Schnittmenge aus beiden Teilen bilden
Ein gutes Beispiel für die unterschiede sieht man hier :
https://en.wikibooks.org/wiki/OpenSCAD_ ... _Modelling
Dann muss man Objekte in ihrer lage ändern können:
translate : verschieben können,
rotate : um Achsen drehen
scale : seine proportionen ändern können
Hierbei ist wichtig zu verstehen, dass die Reihenfolge einen unterschied macht.
Es macht bei komplexes Objekten einen Unterschied ob ich erst rotiere und dann verschiebe oder anders herum.
Eine Zeile wird logisch abeschlossen mit einem ; oder wenn es mehr als eine Zeile ist, dann wird der Block mit { } eingerahmt.
Eine Zeile kann also manchmal unterschiedlich aussehen aber das gleiche tun.
Befehle werden in Reihenfolge untereinander abgearbeitet. Das ist ein bissel gelogen, aber ditaktisch erstmal so okay.
entspricht
da das translate um genau 0 in alle achsen verschiebt. Warum man das vielleicht doch tut, lernen wir beim Thema Variablen und schleifen.
entspricht
Code: Alles auswählen
union() {
cube([5, 5, 5]);
translate([10,0,0]) cube([5, 5, 5]);
}
Das Union ist implizit wenn zwei Befehle untereinander stehen sind die automatisch ein Union.
Warum braucht man das also.
Beim Difference. Der zieht alles vom ersten Objekt ab. Wenn ich also möchte, das ein drittes von den ersten zwei Objekten abgezogen wird, packe ich die ersten zwei in ein Union und von dem allen ziehe ich dann das dritte Objekt ab-
Eine Zeile wird mit einem ; abgeschlossen. Also gehört alles bis zum ; zu dieser Zeile.
Der Würfel wird erzeugt, dann rotiert und dann verschoben.
Code: Alles auswählen
translate([x,y,z]) rotate([x,y,z]) cube([höhe, breite, tiefe]);
Es gibt dann auch noch kleinere Visuelle Hilfen:
Color("blue") malt das Object farblich an, das hat aber keinen Einfluß aufs rendern.
# markiert, das Object in rot, entspricht also dem Befehl Color("red")
% setzt das Objekt in ein transparentes Grau. Ich nutze es zum Beispiel um wenn ich am Steckring arbeite, den Grundstein mit einzublenden um zu sehen ob alles übereinander passt.
* blendet, die Zeile aus, sie wird also ignoriert.
! Macht genau das Gegenteil, alles andere wird ignoriert, nur diese Zeile gilt.
Mit diesen Befehlen kann man also Code sehr leicht debuggen um zu sehen, was passiert hier eigentlich.
Um das Beispiel also zu erweitern,
wir erzeugen einen Cylinder,
legen ihn ins Zentrum des Koordinaten Kreuzes,
mit $fn legen wir fest aus wieviel einzelsegmenten die Oberfläche besteht. Ein Cylinder mit $fn=6 ist also ein Hexagon. ein Cylinder mit $fn=100 ist ein solider Kreis.
wir rotieren ihn um die y Achse
und verschieben ihn und zum Schluss färben wir ihn blau ein.
Code: Alles auswählen
color("blue") translate([-20,10,0]) rotate([0,90,0]) cylinder(d = 5, h = 20, center = true,$fn=100);
Das soll es erstmal für heute gewesen sein.
Im nächsten Abschnitt, beschreibe ich Variablen, Module, und schleifen, und das arbeiten mit mehreren Dateien