--- /dev/null
+draft = 0;
+eps = 0.01;
+infty = 100;
+
+kuzel_def = [
+ [ 6.5, 0 ],
+ [ 6.5, 1.5 ],
+ [ 3.5, 4 ],
+ [ 2.5, 6 ],
+ [ 1.5, 13.0 ],
+ [ 0.5, 15.0 ],
+];
+
+module kuzel() {
+ for (i = [0 : len(kuzel_def)-2]) {
+ translate([0, 0, kuzel_def[i][1]])
+ cylinder(r1 = kuzel_def[i][0],
+ r2 = kuzel_def[i+1][0],
+ h = kuzel_def[i+1][1] + eps - kuzel_def[i][1]);
+ }
+};
+
+kuzel2_def = [
+ [ 1.5, 0 ],
+ [ 1.5, 13.0 ],
+ [ 0.5, 15.0 ],
+];
+
+module kuzel2() {
+ for (i = [0 : len(kuzel2_def)-2]) {
+ translate([0, 0, kuzel2_def[i][1]])
+ cylinder(r1 = kuzel2_def[i][0],
+ r2 = kuzel2_def[i+1][0],
+ h = kuzel2_def[i+1][1] + eps - kuzel2_def[i][1]);
+ }
+};
+
+module shape(h)
+{
+ linear_extrude(height=h)
+ polygon([[-15, -15], [-15, 15], [15, 15], [15, -15]]);
+};
+
+for (x = [0, 45]) translate([x, 0, 0])
+difference(){
+ minkowski(){
+ shape(eps);
+ if (draft == 1) {
+ kuzel($fn = 6);
+ } else {
+ kuzel($fn = 32);
+ }
+ }
+ translate([0,0,-infty/2]) shape(infty);
+};
+
+difference(){
+ union() {
+ minkowski(){
+ cylinder(r = 7, h = eps, $fn = 128);
+ if (draft == 1) {
+ kuzel2($fn = 6);
+ } else {
+ kuzel2($fn = 32);
+ }
+ }
+ for (a = [0, 90]) rotate([0, 0, a])
+ translate([-15, -1, 0]) cube([30, 2, 7]);
+ }
+ translate([0,0,-infty/2]) cylinder(r = 7, h = infty);
+};