
A deliberately faceted vase — and a good example of how a few OpenSCAD quirks add up to a piece of its own.
The tricks behind it
- Variables instead of fixed numbers:
a–fat the top set the dimensions;c = a - b*2works out the inner diameter from the outer diameter minus twice the wall thickness. OpenSCAD needs no declaration. $fnas a design choice: normally you turn$fnup to make round bodies smooth. Here it's deliberately low ($fn=10), so the vase comes out polygonal rather than round. A low resolution isn't always a fault — sometimes it's the look.hull()for the foot: the base is the hull (hull()) of two cylinders — a narrow one on top, a wider one below.hull()wraps a convex skin around any objects; ideal for soft transitions.
Printing it watertight
A printed vase isn't automatically watertight: fine channels remain between the walls and through the layer-by-layer build-up. What helped was increasing the number of wall lines in the slicer and adding more material (a waterproof liner does the job too). That's not an OpenSCAD matter but a printing one — good to know before you first fill it with water.
// outer diameter of upper cylinder
a = 30;
// wall thickness of upper cylinder
b = 3;
// inner diameter of upper cylinder
c = a - b * 2;
// height of upper cylinder
d = 70;
// max. diameter of foot
e = 60;
// height of foot
f = 20;
$fn=10;
difference() {
cylinder(d=a, h=d);
cylinder(d=c, h=d);
}
hull() {
translate([0,0, -2])
cylinder(d=a, h =2);
translate([0, 0, -f-2])
cylinder(d=e, h = 2);
}


