Eckiges und Rundes mit flachen Rundungen versehen (variable Eingabe)
Vielleicht erinnert jemanden das Bild an ein Raumschiff aus einer alten Fernsehserie....
Beginnen wir mit dem Script. Es werden über 'include' verschiedene scad-Dateien nachgeladen. Diese sollten sich im gleichen Ordner wie die zuerst aufgerufenen befinden.
Dies hat den Vorteil, die jeweiligen Module wurden als einzelne Scripte verfasst, getestet und gespeichert. So kann jedes Modul jederzeit abgeändert werden.
Der eigentliche Script, der die Module aufruft, kann so kürzer und übersichtlicher gestaltet werden.
Übrigens: der rechte Script ergibt das obere Bild!
// komplett_rund.scad
// Variable Eingaben und Aufrufe
$fn=50;
include <rund_r_u.scad>;
include <rund_r_o.scad>;
include <ecke_r_u.scad>;
include <ecke_r_o.scad>;
// Zylinder mit Rundung
kreisoben (25, 5); // Durchmesser, Radius oben
kreisunten (35, 9); // Durchmesser, Radius unten
// Kubus mit Rundung
translate([-15,0,0])
eckoben (30, 75, 3); // X, Y, Radius oben
translate([-17.5,0,0])
eckunten(35, 55, 5); // X, Y, Radius unten
Die einzelnen Scripte / Module
Script: ecke_r_o.scad
// ecke_r_o.scad
// breite = X-Achse
// laenge = Y-Achse
// radius = Höhe & Radius der Rundung
module eckoben (breite, laenge, radius) {
difference() {
hull() {
translate([radius,radius,0])
sphere(radius);
translate([breite - radius,radius,0])
sphere(radius);
translate([radius, laenge - radius,0])
sphere(radius);
translate([breite - radius, laenge - radius,0])
sphere(radius);
}
translate([0,0, -radius])
cube ([breite, laenge, radius]);
}
}
// Aufruf über:
// eckoben (30, 55, 3); // X, Y, Radius oben
Script: ecke_r_u.scad
// ecke_r_u.scad
// breite = X-Achse
// laenge = Y-Achse
// radius = Höhe & Radius der Rundung
module eckunten (breite, laenge, radius) {
difference() {
hull() {
translate([radius,radius,0])
sphere(radius);
translate([breite - radius,radius,0])
sphere(radius);
translate([radius, laenge - radius,0])
sphere(radius);
translate([breite - radius, laenge - radius,0])
sphere(radius);
}
cube ([breite, laenge, radius]);
}
}
// Aufruf über:
// eckunten (30, 55, 3); // X, Y, Radius oben
Script: rund_r_o.scad
// rund_r_o.scad
// durchmesser = des Zylinders
// radius = Höhe & Radius der Rundung
module kreisoben (durchmesser, radius) {
difference() {
hull() {
rotate_extrude(convexity = 10)
translate([durchmesser - radius, 0, 0])
circle(r = radius);
}
translate([0,0, -radius])
cylinder (h = radius, r = durchmesser);
}
}
// Aufruf über:
// kreisoben (34, 4); // Durchmesser, Radius
Script: rund_r_u.scad
// rund_r_u.scad
// durchmesser = des Zylinders
// radius = Höhe & Radius der Rundung
module kreisunten (durchmesser, radius) {
difference() {
hull() {
rotate_extrude(convexity = 10)
translate([durchmesser - radius, 0, 0])
circle(r = radius);
}
translate([0,0, -radius])
cylinder (h = radius, r = durchmesser);
}
}
// Aufruf über:
// kreisunten (34, 4); // Durchmesser, Radius
Kopieren Sie die einzelnen Scripte und speichern diese unter den aufgeführten Namen ab.
Nicht benötigte Scripte müssen nicht geladen werden!