Eigene Module
Eigene Module verwenden
Manche Objekte möchte man mehrfach verwenden. Dazu kann man in OpenSCAD eigene Module erstellen, die sich im Wesentlichen wie Unterprogramme verhalten.
Dadurch ergeben sich Vorteile:
- Das Skript wird übersichtlicher
- Objekte können leichter wiederverwendet werden
- Objekte können durch Parameter variabel gehalten werden
Ein Modul ohne Parameter
Möchte man Objekte mit symmetrischen Eigenschaften erzeugen, so kann man sich einige Arbeit ersparen, indem man diese Symmetrie ausnutzt und nur einen Teil des Objektes generiert.
module viertelTraeger(){
polygon(points=[[0,4],[30,4],[45,1],[45,0],[80,0],[80,5],[45.396,5],[30.396,8],[0,8]]);
}
Wenn du eine Skizze vorher exakt anfertigst, kannst du die Werte ablesen (klicke auf die Skizze, um sie zu vergößern):
Hierdurch wird zunächst ein Viertel des Objektes generiert:
Dieser wird nun entsprechend gespiegelt, rotiert und extrudiert:
linear_extrude(1){
// ganzer Träger bestehend aus:
viertelTraeger();
mirror([0,1,0]) viertelTraeger(); // Spiegelung nach "unten"
mirror([1,0,0]) viertelTraeger(); // Spiegelung nach "links"
rotate([0,0,180]) viertelTraeger(); // Punktspiegelung am Ursprung
}
Ein Modul mit Parametern
Es soll ein Haken erzeugt werden. Dazu wurde folgende Skizze auf Papier gezeichnet (klicke auf das Bild, um es zu vergrößern):
Aufgabe 1: Haken ohne Parameter
Erstelle ein Modul (wie oben, ohne Parameter), das genau diesen Haken (in 2D) erzeugt. Klicke dazu auf die Skizze, damit du die Koordinaten ablesen kannst.
Deine Lösung sollte in etwa so aussehen - allerdings kannst du bei einem Polygon mit einem beliebigen Punkt starten...
module Haken(){
polygon(points=[[0,8],[4,12],[4,-12],[0,-8]]);
translate([0,12,0]) circle(r=4);
translate([0,-12,0]) circle(r=4);
}
Haken();
Aufgabe 2: Haken mit Parameter
Manchmal möchte man Elemente in der Größe flexibel festlegen, ohne scale()
oder resize()
zu verwenden. Du kannst ein Modul auch mit Parametern versehen (wie bei einer Funktion in der Programmierung) und dann hinterher mit konkreten Werten für diese Parameter aufrufen.
Erstelle ein Modul Haken(b,h)
, so dass der Aufruf Haken(4,16);
den gleichen Haken erzeugt, wie zuvor.
Zunächst: Damit du weißt, welche Bedeutung die Parameter b und h haben, klicke noch einmal auf die Skizze und werde dir darüber klar, dass alle Punkte und auch der Radius der Kreise nur von diesen Parametern abhängen.
Deine Lösung sollte in etwa so aussehen - allerdings kannst du bei einem Polygon mit einem beliebigen Punkt starten...
module Haken(b,h){
polygon(points=[[0,h/2],[b,h/2+b],[b,-(h/2+b)],[0,-h/2]]);
translate([0,h/2+b,0]) circle(r=b);
translate([0,-(h/2+b),0]) circle(r=b);
}
Haken(4,16);
Anwendung: Maskenhalter
Es soll ein Maskenhalter für medizinische und FFP2-Masken erzeugt werden, um die Ohren ein wenig zu schonen.
Dabei sollen der Träger eine Höhe von 1mm und die Haken eine Höhe von 1,6mm haben.
Aufgabe 3: Module kombinieren
Verwende die oben erarbeiteten Module (mit oder ohne Parameter - ganz wie du willst), um den Maskenhalter wie dargestellt zu erzeugen. Die Farben spielen dabei keine Rolle.
Hier eine Lösung ohne Parameter:
$fn=100;
module viertelTraeger(){
polygon(points=[[0,4],[30,4],[45,1],[45,0],[80,0],[80,5],[45.396,5],[30.396,8],[0,8]]);
}
module Haken(){
polygon(points=[[0,8],[4,12],[4,-12],[0,-8]]);
translate([0,12,0]) circle(r=4);
translate([0,-12,0]) circle(r=4);
}
color("#0077b6")linear_extrude(1){
// ganzer Träger bestehend aus:
viertelTraeger();
mirror([0,1,0]) viertelTraeger();
mirror([1,0,0]) viertelTraeger();
rotate([0,0,180]) viertelTraeger();
}
color("#66b8a0")linear_extrude(1.6){
// die Haken auf der rechten Seite
translate([50+0,0,0]) Haken();
translate([50+15,0,0]) Haken();
translate([50+30,0,0]) Haken();
// die Haken auf der linken Seite
mirror([1,0,0]){
translate([50+0,0,0]) Haken();
translate([50+15,0,0]) Haken();
translate([50+30,0,0]) Haken();
}
}
Quellen
- [1]: Träger - Urheber: JOM - Lizenz: inf-schule.de
- [2]: Träger - Urheber: JOM - Lizenz: inf-schule.de
- [3]: Viertel-Träger - Urheber: JOM - Lizenz: inf-schule.de
- [4]: Haken - Urheber: JOM - Lizenz: inf-schule.de
- [5]: Hakenskizze - Urheber: JOM - Lizenz: inf-schule.de
- [6]: Maskenhalter - Urheber: JOM - Lizenz: inf-schule.de