http://www.rf1000.de/viewtopic.php?f=23 ... t=20#p8784
aber erst jetzt entdeckt, wie man sowas wirklich einfach beschreibt.
Es sind zwei möglicherweise weniger bekannt Befehle von openSCAD, die hier eine Rolle spielen.
offset https://en.wikibooks.org/wiki/OpenSCAD_ ... ons#offset
und
hull https://en.wikibooks.org/wiki/OpenSCAD_ ... tions#hull
"offset" arbeitet nur auf 2D-Strukturen und kann diese in der Größe um einen konstanten Offset zu allen Seiten verändern. Interessant ist, dass die Ecken dabei gerundet werden können. Bei genauer Betrachtung wird damit die Vorgabe, dass der neue Umriss einen konstanten Abstand zum ursprünglichen aufweist, eigentlich am exaktesten erfüllt. Es gibt aber auch die Möglichkeit ohne Eckenrundung.
"hull" ist ein 3D-Befehl, der eine Hülle um zwei beliebige Objekte umspannt, so als würde man sie mit Frischhaltefolie einwickeln.
WIr müssen nun die beiden Querschnitte an den Enden der Röhre als 2D-Objekt beschreiben. Wir nehmen einen Kreis und ein Rechteck:
Code: Alles auswählen
circle(d=10);
square([20, 30]);
Code: Alles auswählen
offset(r=1) circle(d=10);
offset(r=1) square([20, 30]);
Code: Alles auswählen
linear_extrude(height=0.01) offset(r=1) circle(d=10);
linear_extrude(height=0.01) offset(r=1) square([20, 30]);
Code: Alles auswählen
translate([0, 15, 40]) linear_extrude(height=0.01) offset(r=1) circle(d=10);
linear_extrude(height=0.01) offset(r=1) square([20, 30]);
Code: Alles auswählen
$fn=64;
hull() {
translate([0, 15, 40]) linear_extrude(height=0.01) offset(r=1) circle(d=10);
linear_extrude(height=0.01) offset(r=1) square([20, 30]);
}
Code: Alles auswählen
$fn=64;
difference() {
hull() {
translate([0, 15, 40]) linear_extrude(height=0.01) offset(r=1) circle(d=10);
linear_extrude(height=0.01) offset(r=1) square([20, 30]);
}
hull() {
translate([0, 15, 40]) linear_extrude(height=0.01) circle(d=10);
linear_extrude(height=0.01) square([20, 30]);
}
}
Wenn man dies nun sliced und im Viewer anschaut sieht man, dass die 1mm Wandstärke in allen Layern exakt eingehalten wurde. Bei 0.5mm Extrusionsbreite ergeben sich zwei Perimeter ohne Lücken oder Überlappungen.