Mit intersection() behältst du in OpenSCAD nur das gemeinsame Volumen mehrerer Körper. An Beispielen mit Quader, Kugel und Zylinder lernst du, Formen zu beschneiden und ihre Begrenzungen parametrisch zu steuern.
Voraussetzungen
Du brauchst OpenSCAD und die Grundlagen aus Teil 7 des Kurses.
In den letzten Lektionen haben wir bereits zwei boolesche Operationen kennengelernt:
union();
difference();
Mit union() können Körper vereinigt werden, mit difference() können wir Geometrie entfernen.
Die dritte grundlegende Operation lautet:
intersection();
intersection() behält ausschließlich den Bereich, in dem sich mehrere Körper überschneiden.
Lernziel:
Nach dieser Lektion kannst du geometrische Schnittmengen erzeugen und damit Formen beschneiden oder auf bestimmte Bereiche begrenzen.
OpenSCAD intersection(): Gemeinsames Volumen behalten
intersection() {
cube(
[30, 30, 30],
center=true
);
sphere(
d=40,
$fn=64
);
}
Von Würfel und Kugel bleibt nur die gemeinsame Schnittmenge erhalten.
Die drei booleschen Operationen im Vergleich
| Operation | Wirkung |
|---|---|
union() |
Körper vereinigen |
difference() |
Körper voneinander abziehen |
intersection() |
nur gemeinsamen Bereich behalten |
Schnittmenge verändern
Durch Verschieben eines Körpers verändert sich das Ergebnis:
intersection() {
cube(
[40, 40, 20],
center=true
);
translate([15, 0, 0])
sphere(
d=40,
$fn=64
);
}
Zylinder und Quader kombinieren
intersection() {
cube(
[30, 30, 30],
center=true
);
cylinder(
h=50,
d=40,
center=true,
$fn=64
);
}
Auch hier bleibt ausschließlich das gemeinsame Volumen erhalten.
Typische Anwendungen
intersection() eignet sich unter anderem für:
-
geometrisches Beschneiden
-
Begrenzen komplexer Formen
-
spezielle Übergangsformen
-
Kombination runder und gerader Begrenzungen
-
Formexperimente
Parametrischer Formkörper
breite = 50;
tiefe = 30;
hoehe = 20;
kugel_d = 45;
scale_x = 1.4;
intersection() {
cube(
[breite, tiefe, hoehe],
center=true
);
scale([scale_x, 1, 1])
sphere(
d=kugel_d,
$fn=64
);
}
Mehrere Körper schneiden
intersection() {
cube([40, 40, 30], center=true);
cylinder(
h=50,
d=45,
center=true,
$fn=64
);
sphere(
d=50,
$fn=64
);
}
Das Ergebnis muss innerhalb aller drei Geometrien liegen.
Mitmach-Aufgabe
Erstelle einen Körper aus:
| Parameter | Wert |
|---|---|
| Quaderbreite | 50 mm |
| Quadertiefe | 40 mm |
| Quaderhöhe | 20 mm |
| Kugeldurchmesser | 50 mm |
| Skalierung X | 1,5 |
Verwende:
intersection()
cube()
sphere()
scale()
Musterlösung
breite = 50;
tiefe = 40;
hoehe = 20;
kugel_d = 50;
scale_x = 1.5;
intersection() {
cube(
[breite, tiefe, hoehe],
center=true
);
scale([scale_x, 1, 1])
sphere(
d=kugel_d,
$fn=64
);
}
Was haben wir gelernt?
Wir kennen jetzt die drei wichtigen booleschen Operationen:
union()
difference()
intersection()
Damit können wir:
-
Geometrien hinzufügen
-
Geometrien entfernen
-
Schnittmengen bilden
Diese drei Werkzeuge bilden eine der wichtigsten Grundlagen für das eigentliche Konstruieren in OpenSCAD.
Häufige Fragen
Was ist der Unterschied zwischen intersection() und difference()?
intersection() behält den Bereich, der in allen beteiligten Körpern liegt. difference() entfernt dagegen die nachfolgenden Körper vom ersten Grundkörper.
Warum zeigt intersection() kein Modell an?
Wenn die beteiligten Körper kein gemeinsames Volumen besitzen, bleibt kein dreidimensionales Bauteil übrig. Prüfe ihre Positionen, Abmessungen und die Einstellung center, damit sie sich räumlich überschneiden.
Passendes Cheatsheet
Im Cheatsheet „Boolesche Operationen“ findest du ergänzende Grundlagen zum Nachschlagen. Du kannst das Cheatsheet auch direkt als PDF herunterladen.
