Diameter = 101.6; // 0.1 Depth = 6; // 0.1 Inset = false; Inset_depth = 4; // 0.1 Inset_width = 5; // 0.1 Inner_pattern = "n"; // [n: None, c: Circle] Inner_pattern_width = 5; // 0.1 Inner_pattern_depth = 1; // 0.1 $fn = 180; // 0.1 module coaster_frame() { difference() { cylinder(h = Depth, d = Diameter); if (Inset) { cylinder(h = Inset_depth, d = Diameter - 2*Inset_width); }; }; } module coaster_pattern() { offset = Inset ? [0, 0, Inset_depth - Inner_pattern_depth] : [0, 0, -Inner_pattern_depth]; if (Inner_pattern == "c") { translate(offset) { #cylinder(h = Inner_pattern_depth, d = Inner_pattern_width); } } } rotate([0, 180, 0]) { union() { coaster_frame(); coaster_pattern(); } };