1module m(x, y) { 2 translate(60 * [x, y]) children(); 3} 4 5module shape1(w = 20) { 6 difference() { 7 square([ w, w], center = true); 8 square([10, 10], center = true); 9 } 10} 11 12module shape2() { 13 polygon(points=[ 14 [-15, 80],[15, 80],[0,-15],[-8, 60],[8, 60],[0, 5] 15 ], paths=[ 16 [0,1,2],[3,4,5] 17 ]); 18} 19 20m(-1, 0) shape1(); 21m(-1, 2) shape2(); 22 23m(0, 0) offset() shape1(); 24m(0, 1) offset(5) shape1(); 25m(0, 2) offset(5) shape2(); 26 27m(1, 0) offset(r = 1) shape1(30); 28m(1, 1) offset(r = 5) shape1(30); 29m(1, 2) offset(r = 5) shape2(); 30 31m(2, 0) offset(r = -5) shape1(40); 32m(2, 1) offset(r = -10.01) shape1(50); 33m(2, 2) offset(r = -1) shape2(); 34 35m(3, 0) offset(delta = 4) shape1(); 36m(3, 1) offset(delta = 1) shape1(); 37m(3, 2) offset(delta = 5) shape2(); 38 39m(4, 0) offset(delta = -2) shape1(30); 40m(4, 1) offset(delta = -5) shape1(40); 41m(4, 2) offset(delta = -1) shape2(); 42 43m(5, 0) offset(delta = 4, chamfer = true) shape1(); 44m(5, 1) offset(delta = 1, chamfer = true) shape1(); 45m(5, 2) offset(delta = 5, chamfer = true) shape2(); 46 47m(6, 0) offset(delta = -2, chamfer = true) shape1(30); 48m(6, 1) offset(delta = -5, chamfer = true) shape1(40); 49m(6, 2) offset(delta = -1, chamfer = true) shape2(); 50 51// Bug with fragment calculateion with delta < 1 due to abs() instead of std::abs() 52m(-2, 1) scale([30, 30]) offset(r = 0.8) square(1); 53 54// Malformed offsets 55offset(); 56offset() square(0); 57