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


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!






www.brixelweb.de