// 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); } } } } } } translate(v = [0, 0.0000000000, 0]) { color(alpha = 1.0000000000, c = "yellow") { translate(v = [9, 11, 64]) { union() { minkowski() { cube(size = [90.0000000000, 0.0010000000, 3]); sphere($fn = 36, r = 7); } minkowski() { translate(v = [90.0000000000, 0, 0]) { cube(size = [8.0000000000, 0.0010000000, 3]); } sphere($fn = 36, r = 9); } } } } } translate(v = [0, 19.4000000000, 0]) { color(alpha = 1.0000000000, c = "yellow") { translate(v = [9, 11, 64]) { union() { minkowski() { cube(size = [90.0000000000, 0.0010000000, 3]); sphere($fn = 36, r = 7); } minkowski() { translate(v = [90.0000000000, 0, 0]) { cube(size = [8.0000000000, 0.0010000000, 3]); } sphere($fn = 36, r = 9); } } } } } translate(v = [0, 38.8000000000, 0]) { color(alpha = 1.0000000000, c = "yellow") { translate(v = [9, 11, 64]) { union() { minkowski() { cube(size = [90.0000000000, 0.0010000000, 3]); sphere($fn = 36, r = 7); } minkowski() { translate(v = [90.0000000000, 0, 0]) { cube(size = [8.0000000000, 0.0010000000, 3]); } sphere($fn = 36, r = 9); } } } } } translate(v = [0, 58.2000000000, 0]) { color(alpha = 1.0000000000, c = "yellow") { translate(v = [9, 11, 64]) { union() { minkowski() { cube(size = [90.0000000000, 0.0010000000, 3]); sphere($fn = 36, r = 7); } minkowski() { translate(v = [90.0000000000, 0, 0]) { cube(size = [8.0000000000, 0.0010000000, 3]); } sphere($fn = 36, r = 9); } } } } } translate(v = [0, 77.6000000000, 0]) { color(alpha = 1.0000000000, c = "yellow") { translate(v = [9, 11, 64]) { union() { minkowski() { cube(size = [90.0000000000, 0.0010000000, 3]); sphere($fn = 36, r = 7); } minkowski() { translate(v = [90.0000000000, 0, 0]) { cube(size = [8.0000000000, 0.0010000000, 3]); } sphere($fn = 36, r = 9); } } } } } translate(v = [0, 97.0000000000, 0]) { color(alpha = 1.0000000000, c = "yellow") { translate(v = [9, 11, 64]) { union() { minkowski() { cube(size = [90.0000000000, 0.0010000000, 3]); sphere($fn = 36, r = 7); } minkowski() { translate(v = [90.0000000000, 0, 0]) { cube(size = [8.0000000000, 0.0010000000, 3]); } sphere($fn = 36, r = 9); } } } } } translate(v = [0, 116.4000000000, 0]) { color(alpha = 1.0000000000, c = "yellow") { translate(v = [9, 11, 64]) { union() { minkowski() { cube(size = [90.0000000000, 0.0010000000, 3]); sphere($fn = 36, r = 7); } minkowski() { translate(v = [90.0000000000, 0, 0]) { cube(size = [8.0000000000, 0.0010000000, 3]); } sphere($fn = 36, r = 9); } } } } } translate(v = [0, 135.8000000000, 0]) { color(alpha = 1.0000000000, c = "yellow") { translate(v = [9, 11, 64]) { union() { minkowski() { cube(size = [90.0000000000, 0.0010000000, 3]); sphere($fn = 36, r = 7); } minkowski() { translate(v = [90.0000000000, 0, 0]) { cube(size = [8.0000000000, 0.0010000000, 3]); } sphere($fn = 36, r = 9); } } } } } translate(v = [0, 155.2000000000, 0]) { color(alpha = 1.0000000000, c = "yellow") { translate(v = [9, 11, 64]) { union() { minkowski() { cube(size = [90.0000000000, 0.0010000000, 3]); sphere($fn = 36, r = 7); } minkowski() { translate(v = [90.0000000000, 0, 0]) { cube(size = [8.0000000000, 0.0010000000, 3]); } sphere($fn = 36, r = 9); } } } } } } /*********************************************** ********* 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") ************************************************/