$fn = 16; curveModifier = 40; curveModifier2 = 10; module uncutVase(width,height,curveModifier,curveModifier2){ for(i=[0:1:height]){ translate([50,50,i]) cylinder(1,sin(i+curveModifier) * curveModifier2+width/2- curveModifier2,sin(i+1+curveModifier)* curveModifier2+width/2-curveModifier2); } } module vase(width,height,wallWidth){ difference(){ uncutVase(width,height,curveModifier,curveModifier2); translate([width/2,width/2,wallWidth]) cylinder(height,width/2-wallWidth*2.5,width/2-wallWidth*2.5); } } vase(100,250,10);