// Generated by SolidPython 1.0.5 on 2021-02-14 10:24:57 difference() { translate(v = [0, 0, 48]) { translate(v = [4, 4, 0]) { minkowski() { cube(size = [110, 169, 11]); cylinder($fn = 36, h = 8, r = 4); } } } color(alpha = 0.5000000000, c = "red") { union() { difference() { translate(v = [4, 4, 0]) { minkowski() { cube(size = [110, 169, 44]); cylinder($fn = 36, h = 8, r = 4); } } translate(v = [2, 2, 2]) { hull() { translate(v = [2, 2, 2]) { sphere($fn = 36, r = 2); } translate(v = [2, 2, 50]) { sphere($fn = 36, r = 2); } translate(v = [2, 171, 2]) { sphere($fn = 36, r = 2); } translate(v = [2, 171, 50]) { sphere($fn = 36, r = 2); } translate(v = [112, 2, 2]) { sphere($fn = 36, r = 2); } translate(v = [112, 2, 50]) { sphere($fn = 36, r = 2); } translate(v = [112, 171, 2]) { sphere($fn = 36, r = 2); } translate(v = [112, 171, 50]) { sphere($fn = 36, r = 2); } } } union() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [1.5000000000, 0], [0, 1.5000000000]]); } } translate(v = [0, 59, 0]) { rotate(a = [0, 0, -90]) { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [1.5000000000, 0], [0, 1.5000000000]]); } } } } translate(v = [59, 59, 0]) { rotate(a = [0, 0, 180]) { union() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [1.5000000000, 0], [0, 1.5000000000]]); } } translate(v = [0, 59, 0]) { rotate(a = [0, 0, -90]) { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [1.5000000000, 0], [0, 1.5000000000]]); } } } } } } } translate(v = [0, 0, 0]) { union() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [1.5000000000, 0], [0, 1.5000000000]]); } } translate(v = [0, 59, 0]) { rotate(a = [0, 0, -90]) { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [1.5000000000, 0], [0, 1.5000000000]]); } } } } translate(v = [59, 59, 0]) { rotate(a = [0, 0, 180]) { union() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [1.5000000000, 0], [0, 1.5000000000]]); } } translate(v = [0, 59, 0]) { rotate(a = [0, 0, -90]) { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [1.5000000000, 0], [0, 1.5000000000]]); } } } } } } } } } translate(v = [0, 59, 0]) { union() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [1.5000000000, 0], [0, 1.5000000000]]); } } translate(v = [0, 59, 0]) { rotate(a = [0, 0, -90]) { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [1.5000000000, 0], [0, 1.5000000000]]); } } } } translate(v = [59, 59, 0]) { rotate(a = [0, 0, 180]) { union() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [1.5000000000, 0], [0, 1.5000000000]]); } } translate(v = [0, 59, 0]) { rotate(a = [0, 0, -90]) { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [1.5000000000, 0], [0, 1.5000000000]]); } } } } } } } } } translate(v = [0, 118, 0]) { union() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [1.5000000000, 0], [0, 1.5000000000]]); } } translate(v = [0, 59, 0]) { rotate(a = [0, 0, -90]) { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [1.5000000000, 0], [0, 1.5000000000]]); } } } } translate(v = [59, 59, 0]) { rotate(a = [0, 0, 180]) { union() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [1.5000000000, 0], [0, 1.5000000000]]); } } translate(v = [0, 59, 0]) { rotate(a = [0, 0, -90]) { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [1.5000000000, 0], [0, 1.5000000000]]); } } } } } } } } } translate(v = [59, 0, 0]) { union() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [1.5000000000, 0], [0, 1.5000000000]]); } } translate(v = [0, 59, 0]) { rotate(a = [0, 0, -90]) { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [1.5000000000, 0], [0, 1.5000000000]]); } } } } translate(v = [59, 59, 0]) { rotate(a = [0, 0, 180]) { union() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [1.5000000000, 0], [0, 1.5000000000]]); } } translate(v = [0, 59, 0]) { rotate(a = [0, 0, -90]) { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [1.5000000000, 0], [0, 1.5000000000]]); } } } } } } } } } translate(v = [59, 59, 0]) { union() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [1.5000000000, 0], [0, 1.5000000000]]); } } translate(v = [0, 59, 0]) { rotate(a = [0, 0, -90]) { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [1.5000000000, 0], [0, 1.5000000000]]); } } } } translate(v = [59, 59, 0]) { rotate(a = [0, 0, 180]) { union() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [1.5000000000, 0], [0, 1.5000000000]]); } } translate(v = [0, 59, 0]) { rotate(a = [0, 0, -90]) { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [1.5000000000, 0], [0, 1.5000000000]]); } } } } } } } } } translate(v = [59, 118, 0]) { union() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [1.5000000000, 0], [0, 1.5000000000]]); } } translate(v = [0, 59, 0]) { rotate(a = [0, 0, -90]) { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [1.5000000000, 0], [0, 1.5000000000]]); } } } } translate(v = [59, 59, 0]) { rotate(a = [0, 0, 180]) { union() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [1.5000000000, 0], [0, 1.5000000000]]); } } translate(v = [0, 59, 0]) { rotate(a = [0, 0, -90]) { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [1.5000000000, 0], [0, 1.5000000000]]); } } } } } } } } } } } intersection() { translate(v = [0, 0, 2]) { union() { difference() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [3.0000000000, 0], [1.0000000000, 2], [0, 2]]); } } translate(v = [3.0000000000, 3.0000000000, 2]) { union() { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } union() { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } translate(v = [53, 0, 0]) { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } } } } } } translate(v = [0, 59, 0]) { rotate(a = [0, 0, -90]) { difference() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [3.0000000000, 0], [1.0000000000, 2], [0, 2]]); } } translate(v = [3.0000000000, 3.0000000000, 2]) { union() { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } union() { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } translate(v = [53, 0, 0]) { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } } } } } } } } translate(v = [59, 59, 0]) { rotate(a = [0, 0, 180]) { union() { difference() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [3.0000000000, 0], [1.0000000000, 2], [0, 2]]); } } translate(v = [3.0000000000, 3.0000000000, 2]) { union() { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } union() { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } translate(v = [53, 0, 0]) { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } } } } } } translate(v = [0, 59, 0]) { rotate(a = [0, 0, -90]) { difference() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [3.0000000000, 0], [1.0000000000, 2], [0, 2]]); } } translate(v = [3.0000000000, 3.0000000000, 2]) { union() { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } union() { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } translate(v = [53, 0, 0]) { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } } } } } } } } } } } translate(v = [0, 0, 0]) { union() { difference() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [3.0000000000, 0], [1.0000000000, 2], [0, 2]]); } } translate(v = [3.0000000000, 3.0000000000, 2]) { union() { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } union() { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } translate(v = [53, 0, 0]) { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } } } } } } translate(v = [0, 59, 0]) { rotate(a = [0, 0, -90]) { difference() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [3.0000000000, 0], [1.0000000000, 2], [0, 2]]); } } translate(v = [3.0000000000, 3.0000000000, 2]) { union() { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } union() { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } translate(v = [53, 0, 0]) { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } } } } } } } } translate(v = [59, 59, 0]) { rotate(a = [0, 0, 180]) { union() { difference() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [3.0000000000, 0], [1.0000000000, 2], [0, 2]]); } } translate(v = [3.0000000000, 3.0000000000, 2]) { union() { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } union() { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } translate(v = [53, 0, 0]) { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } } } } } } translate(v = [0, 59, 0]) { rotate(a = [0, 0, -90]) { difference() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [3.0000000000, 0], [1.0000000000, 2], [0, 2]]); } } translate(v = [3.0000000000, 3.0000000000, 2]) { union() { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } union() { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } translate(v = [53, 0, 0]) { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } } } } } } } } } } } } } translate(v = [0, 59, 0]) { union() { difference() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [3.0000000000, 0], [1.0000000000, 2], [0, 2]]); } } translate(v = [3.0000000000, 3.0000000000, 2]) { union() { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } union() { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } translate(v = [53, 0, 0]) { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } } } } } } translate(v = [0, 59, 0]) { rotate(a = [0, 0, -90]) { difference() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [3.0000000000, 0], [1.0000000000, 2], [0, 2]]); } } translate(v = [3.0000000000, 3.0000000000, 2]) { union() { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } union() { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } translate(v = [53, 0, 0]) { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } } } } } } } } translate(v = [59, 59, 0]) { rotate(a = [0, 0, 180]) { union() { difference() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [3.0000000000, 0], [1.0000000000, 2], [0, 2]]); } } translate(v = [3.0000000000, 3.0000000000, 2]) { union() { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } union() { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } translate(v = [53, 0, 0]) { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } } } } } } translate(v = [0, 59, 0]) { rotate(a = [0, 0, -90]) { difference() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [3.0000000000, 0], [1.0000000000, 2], [0, 2]]); } } translate(v = [3.0000000000, 3.0000000000, 2]) { union() { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } union() { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } translate(v = [53, 0, 0]) { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } } } } } } } } } } } } } translate(v = [0, 118, 0]) { union() { difference() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [3.0000000000, 0], [1.0000000000, 2], [0, 2]]); } } translate(v = [3.0000000000, 3.0000000000, 2]) { union() { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } union() { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } translate(v = [53, 0, 0]) { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } } } } } } translate(v = [0, 59, 0]) { rotate(a = [0, 0, -90]) { difference() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [3.0000000000, 0], [1.0000000000, 2], [0, 2]]); } } translate(v = [3.0000000000, 3.0000000000, 2]) { union() { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } union() { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } translate(v = [53, 0, 0]) { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } } } } } } } } translate(v = [59, 59, 0]) { rotate(a = [0, 0, 180]) { union() { difference() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [3.0000000000, 0], [1.0000000000, 2], [0, 2]]); } } translate(v = [3.0000000000, 3.0000000000, 2]) { union() { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } union() { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } translate(v = [53, 0, 0]) { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } } } } } } translate(v = [0, 59, 0]) { rotate(a = [0, 0, -90]) { difference() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [3.0000000000, 0], [1.0000000000, 2], [0, 2]]); } } translate(v = [3.0000000000, 3.0000000000, 2]) { union() { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } union() { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } translate(v = [53, 0, 0]) { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } } } } } } } } } } } } } translate(v = [59, 0, 0]) { union() { difference() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [3.0000000000, 0], [1.0000000000, 2], [0, 2]]); } } translate(v = [3.0000000000, 3.0000000000, 2]) { union() { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } union() { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } translate(v = [53, 0, 0]) { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } } } } } } translate(v = [0, 59, 0]) { rotate(a = [0, 0, -90]) { difference() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [3.0000000000, 0], [1.0000000000, 2], [0, 2]]); } } translate(v = [3.0000000000, 3.0000000000, 2]) { union() { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } union() { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } translate(v = [53, 0, 0]) { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } } } } } } } } translate(v = [59, 59, 0]) { rotate(a = [0, 0, 180]) { union() { difference() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [3.0000000000, 0], [1.0000000000, 2], [0, 2]]); } } translate(v = [3.0000000000, 3.0000000000, 2]) { union() { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } union() { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } translate(v = [53, 0, 0]) { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } } } } } } translate(v = [0, 59, 0]) { rotate(a = [0, 0, -90]) { difference() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [3.0000000000, 0], [1.0000000000, 2], [0, 2]]); } } translate(v = [3.0000000000, 3.0000000000, 2]) { union() { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } union() { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } translate(v = [53, 0, 0]) { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } } } } } } } } } } } } } translate(v = [59, 59, 0]) { union() { difference() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [3.0000000000, 0], [1.0000000000, 2], [0, 2]]); } } translate(v = [3.0000000000, 3.0000000000, 2]) { union() { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } union() { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } translate(v = [53, 0, 0]) { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } } } } } } translate(v = [0, 59, 0]) { rotate(a = [0, 0, -90]) { difference() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [3.0000000000, 0], [1.0000000000, 2], [0, 2]]); } } translate(v = [3.0000000000, 3.0000000000, 2]) { union() { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } union() { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } translate(v = [53, 0, 0]) { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } } } } } } } } translate(v = [59, 59, 0]) { rotate(a = [0, 0, 180]) { union() { difference() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [3.0000000000, 0], [1.0000000000, 2], [0, 2]]); } } translate(v = [3.0000000000, 3.0000000000, 2]) { union() { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } union() { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } translate(v = [53, 0, 0]) { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } } } } } } translate(v = [0, 59, 0]) { rotate(a = [0, 0, -90]) { difference() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [3.0000000000, 0], [1.0000000000, 2], [0, 2]]); } } translate(v = [3.0000000000, 3.0000000000, 2]) { union() { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } union() { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } translate(v = [53, 0, 0]) { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } } } } } } } } } } } } } translate(v = [59, 118, 0]) { union() { difference() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [3.0000000000, 0], [1.0000000000, 2], [0, 2]]); } } translate(v = [3.0000000000, 3.0000000000, 2]) { union() { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } union() { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } translate(v = [53, 0, 0]) { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } } } } } } translate(v = [0, 59, 0]) { rotate(a = [0, 0, -90]) { difference() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [3.0000000000, 0], [1.0000000000, 2], [0, 2]]); } } translate(v = [3.0000000000, 3.0000000000, 2]) { union() { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } union() { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } translate(v = [53, 0, 0]) { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } } } } } } } } translate(v = [59, 59, 0]) { rotate(a = [0, 0, 180]) { union() { difference() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [3.0000000000, 0], [1.0000000000, 2], [0, 2]]); } } translate(v = [3.0000000000, 3.0000000000, 2]) { union() { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } union() { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } translate(v = [53, 0, 0]) { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } } } } } } translate(v = [0, 59, 0]) { rotate(a = [0, 0, -90]) { difference() { rotate(a = [90, 0, 90]) { linear_extrude(height = 59) { polygon(points = [[0, 0], [3.0000000000, 0], [1.0000000000, 2], [0, 2]]); } } translate(v = [3.0000000000, 3.0000000000, 2]) { union() { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } union() { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } translate(v = [53, 0, 0]) { rotate(a = [0, -90, 0]) { hull() { translate(v = [0, 0, 0]) { sphere($fn = 36, r = 2); } translate(v = [53, 0, 0]) { sphere($fn = 36, r = 2); } } } } } } } } } } } } } } } } } translate(v = [2, 2, 2]) { hull() { translate(v = [2, 2, 2]) { sphere($fn = 36, r = 2); } translate(v = [2, 2, 50]) { sphere($fn = 36, r = 2); } translate(v = [2, 171, 2]) { sphere($fn = 36, r = 2); } translate(v = [2, 171, 50]) { sphere($fn = 36, r = 2); } translate(v = [112, 2, 2]) { sphere($fn = 36, r = 2); } translate(v = [112, 2, 50]) { sphere($fn = 36, r = 2); } translate(v = [112, 171, 2]) { sphere($fn = 36, r = 2); } translate(v = [112, 171, 50]) { sphere($fn = 36, r = 2); } } } } } } color(alpha = 1.0000000000, c = "yellow") { translate(v = [11, 9, 64]) { hull() { translate(v = [0.,0.,0.]) { sphere($fn = 36, r = 7); } translate(v = [ 0.,159., 0.]) { sphere($fn = 36, r = 7); } translate(v = [ 0.,159., 10.]) { sphere($fn = 36, r = 7); } translate(v = [ 0., 0.,10.]) { sphere($fn = 36, r = 7); } } } } color(alpha = 1.0000000000, c = "yellow") { translate(v = [11, 9, 64]) { hull() { translate(v = [17.4, 0. , 0. ]) { sphere($fn = 36, r = 7); } translate(v = [ 17.4,159. , 0. ]) { sphere($fn = 36, r = 7); } translate(v = [ 17.4,159. , 10. ]) { sphere($fn = 36, r = 7); } translate(v = [17.4, 0. ,10. ]) { sphere($fn = 36, r = 7); } } } } color(alpha = 1.0000000000, c = "yellow") { translate(v = [11, 9, 64]) { hull() { translate(v = [34.8, 0. , 0. ]) { sphere($fn = 36, r = 7); } translate(v = [ 34.8,159. , 0. ]) { sphere($fn = 36, r = 7); } translate(v = [ 34.8,159. , 10. ]) { sphere($fn = 36, r = 7); } translate(v = [34.8, 0. ,10. ]) { sphere($fn = 36, r = 7); } } } } color(alpha = 1.0000000000, c = "yellow") { translate(v = [11, 9, 64]) { hull() { translate(v = [52.2, 0. , 0. ]) { sphere($fn = 36, r = 7); } translate(v = [ 52.2,159. , 0. ]) { sphere($fn = 36, r = 7); } translate(v = [ 52.2,159. , 10. ]) { sphere($fn = 36, r = 7); } translate(v = [52.2, 0. ,10. ]) { sphere($fn = 36, r = 7); } } } } color(alpha = 1.0000000000, c = "yellow") { translate(v = [11, 9, 64]) { hull() { translate(v = [69.6, 0. , 0. ]) { sphere($fn = 36, r = 7); } translate(v = [ 69.6,159. , 0. ]) { sphere($fn = 36, r = 7); } translate(v = [ 69.6,159. , 10. ]) { sphere($fn = 36, r = 7); } translate(v = [69.6, 0. ,10. ]) { sphere($fn = 36, r = 7); } } } } hull() { translate(v = [11.,11.,64.]) { sphere($fn = 36, r = 9); } translate(v = [11. ,26.9,64. ]) { sphere($fn = 36, r = 9); } translate(v = [107., 11., 64.]) { sphere($fn = 36, r = 9); } translate(v = [107. , 26.9, 64. ]) { sphere($fn = 36, r = 9); } translate(v = [11.,11.,74.]) { sphere($fn = 36, r = 9); } translate(v = [11. ,26.9,74. ]) { sphere($fn = 36, r = 9); } translate(v = [107., 11., 74.]) { sphere($fn = 36, r = 9); } translate(v = [107. , 26.9, 74. ]) { sphere($fn = 36, r = 9); } } translate(v = [4, 4, 0]) { translate(v = [7, 7, 0]) { minkowski() { cube(size = [19.9, 17.9, 86]); cylinder($fn = 36, h = 14, r = 7); } } } } /*********************************************** ********* SolidPython code: ********** ************************************************ # import solidLib as sl import solidLib.primitives as slp import solidLib.assortment as sla import solid as s s.scad_render_to_file(slp.pill([[0,0,0],[1, 1, 1]], .25), "./docs/files/pill.scad") s.scad_render_to_file(slp.rcube([1, 1, 1], .25), "./docs/files/rcube.scad") s.scad_render_to_file(slp.rfcube([1, 1, 1], .25), "./docs/files/rfcube.scad") s.scad_render_to_file(sla.bin(1, 1), "./docs/files/bin.scad") s.scad_render_to_file(sla.grid(2,3), "docs/files/grid.scad") s.scad_render_to_file(sla.grid_inv(2,3), "docs/files/grid_inv.scad") s.scad_render_to_file(sla.toolinlay1(15), "docs/files/toolinlay1.scad") s.scad_render_to_file(sla.toolinlay2(15), "docs/files/toolinlay2.scad") ************************************************/