|
diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js
index 254ff4d..ce7bd23 100644
--- a/docs/_build/html/searchindex.js
+++ b/docs/_build/html/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["index","solidLib"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,"sphinx.ext.todo":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["index.rst","solidLib.rst"],objects:{"":{solidLib:[1,0,0,"-"]},"solidLib.assortment":{bin:[1,1,1,""],grid:[1,1,1,""],grid_inv:[1,1,1,""],toolinlay1:[1,1,1,""],toolinlay2:[1,1,1,""]},"solidLib.primitives":{pill:[1,1,1,""],round_box:[1,1,1,""],round_box_new:[1,1,1,""],round_flat_box:[1,1,1,""]},solidLib:{assortment:[1,0,0,"-"],globals:[1,0,0,"-"],primitives:[1,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:function"},terms:{"2x3":1,"2x3x":[],"float":1,"int":1,abov:1,addit:1,alex:1,arg:1,assort:0,base:1,bin:1,bool:1,bottom:1,box:1,circular:1,contain:1,content:0,corner:1,creat:1,cube:1,deprec:1,depth:1,dim:1,dimens:1,fals:1,fillet:1,flat:1,flatten:1,gener:1,given:1,global:0,grid:1,grid_inv:1,gridspac:1,height:1,index:0,inset:1,inset_tool:1,iter:1,list:1,lower:1,maxh:1,modul:0,object:1,oer:[],packag:0,page:0,paramet:1,pill:1,primit:0,r_tool:1,radiu:1,raster:1,restrict:1,round:1,round_box:1,round_box_new:1,round_flat_box:1,search:0,segment:1,size:1,sourc:1,structur:1,submodul:0,system:1,toolinlai:1,toolinlay1:1,toolinlay2:1,toolspac:1,tooltrai:1,top:1,triangl:1,union:1,used:1,wall:1,warn:[],width:1,without:1,x_dim:1,y_dim:1,z_dim:1},titles:["Welcome to solidLib\u2019s documentation!","solidLib package"],titleterms:{assort:1,content:1,document:0,global:1,indic:0,modul:1,packag:1,primit:1,solidlib:[0,1],submodul:1,tabl:0,welcom:0}})
\ No newline at end of file
+Search.setIndex({docnames:["index","solidLib"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,"sphinx.ext.todo":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["index.rst","solidLib.rst"],objects:{"":{solidLib:[1,0,0,"-"]},"solidLib.assortment":{bin:[1,1,1,""],grid:[1,1,1,""],grid_inv:[1,1,1,""],toolinlay1:[1,1,1,""],toolinlay2:[1,1,1,""]},"solidLib.primitives":{pill:[1,1,1,""],rcube:[1,1,1,""],round_box:[1,1,1,""],round_flat_box:[1,1,1,""]},"solidLib.settings":{height:[1,3,1,""],raster:[1,3,1,""],segments:[1,3,1,""]},solidLib:{assortment:[1,0,0,"-"],primitives:[1,0,0,"-"],settings:[1,2,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","attribute","Python attribute"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:attribute"},terms:{"2x3":1,"class":1,"float":1,"int":1,abov:1,addit:1,alex:1,arg:1,around:1,assort:0,base:1,bin:1,bool:1,bottom:1,box:1,circular:1,contain:1,content:0,corner:1,creat:1,cube:1,deprec:1,depth:1,dim:1,dimens:1,dolidlib:1,fals:1,fillet:1,flat:1,flatten:1,gener:1,given:1,global:1,grid:1,grid_inv:1,gridspac:1,height:1,index:0,inset:1,inset_tool:1,iter:1,list:1,lower:1,maxh:1,modul:0,object:1,packag:0,page:0,paramet:1,pill:1,point:1,primit:0,r_tool:1,radiu:1,raster:1,rcube:1,restrict:1,round:1,round_box:1,round_flat_box:1,search:0,segment:1,set:1,size:1,sourc:1,standard:1,structur:1,submodul:0,system:1,toolinlai:1,toolinlay1:1,toolinlay2:1,toolspac:1,tooltrai:1,top:1,triangl:1,union:1,used:1,wall:1,width:1,without:1,x_dim:1,y_dim:1,z_dim:1},titles:["Welcome to solidLib\u2019s documentation!","solidLib package"],titleterms:{assort:1,content:1,document:0,global:[],indic:0,modul:1,packag:1,primit:1,solidlib:[0,1],submodul:1,tabl:0,welcom:0}})
\ No newline at end of file
diff --git a/docs/_build/html/solidLib.html b/docs/_build/html/solidLib.html
index f3d6999..2700135 100644
--- a/docs/_build/html/solidLib.html
+++ b/docs/_build/html/solidLib.html
@@ -119,10 +119,6 @@
solidLib.assortment module
-
- solidLib.globals module
-
-
solidLib.primitives module
@@ -154,7 +150,9 @@
-
solidLib.assortment.bin(x: float, y: float, h: float = 67, segments: int = 36, dim: float = 59)[source]
-
+standardized container
+
+
-
@@ -174,7 +172,7 @@ the triangles used for the base structure is given by their height and width
-
solidLib.assortment.toolinlay1(height: float, *args, r_tool: float = 7, inset: float = 4, maxh: float = 67, dim: float = 59, segments: int = 36)[source]
creates a tooltray for alex container bins (2x3)
-
+
- Parameters
-
-
- solidLib.globals module
solidLib.primitives module
-
solidLib.primitives.pill(ps: List[List[float]], r, segments: int = 36)[source]
-
+ create a pill around given points
+
+
+
+-
+
solidLib.primitives.rcube(dim: Iterable[float], radius: float, segments: int = 32)[source]
+creates a cube with rounded corners
+
+
+- Parameters
+-
+
+
+
-
@@ -233,22 +245,6 @@ the triangles used for the base structure is given by their height and width
-
--
-
solidLib.primitives.round_box_new(dim: Iterable[float], radius: float, segments: int = 32)[source]
-creates a cube with rounded corners
-
-
-- Parameters
--
-
-
-
-
-
solidLib.primitives.round_flat_box(x: float, y: float, z: float, r: float, segments: int = 32)[source]
@@ -259,6 +255,28 @@ the triangles used for the base structure is given by their height and width
Module contents
+
+-
+class
solidLib.settings[source]
+Bases: object
+global dolidLib settings
+
+-
+
height = 67
+
+
+
+-
+
raster = 59
+
+
+
+-
+
segments = 36
+
+
+
+
diff --git a/docs/files/bin.scad b/docs/files/bin.scad
new file mode 100644
index 0000000..5926714
--- /dev/null
+++ b/docs/files/bin.scad
@@ -0,0 +1,509 @@
+// Generated by SolidPython 1.0.5 on 2021-02-12 20:02:04
+
+
+union() {
+ difference() {
+ translate(v = [4, 4, 0]) {
+ minkowski() {
+ cube(size = [51, 51, 59]);
+ cylinder($fn = 36, h = 8, r = 4);
+ }
+ }
+ translate(v = [2, 2, 2]) {
+ translate(v = [2, 2, 2]) {
+ minkowski() {
+ cube(size = [51, 51, 63]);
+ sphere($fn = 32, 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]]);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ 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 = [2, 2, 2]) {
+ translate(v = [2, 2, 2]) {
+ minkowski() {
+ cube(size = [51, 51, 63]);
+ sphere($fn = 32, r = 2);
+ }
+ }
+ }
+ }
+}
+/***********************************************
+********* 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.round_box(1, 1, 1, .25), "./docs/files/round_box.scad")
+s.scad_render_to_file(slp.round_flat_box(1, 1, 1, .25), "./docs/files/round_flat_box.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")
+
+
+************************************************/
diff --git a/docs/files/grid.scad b/docs/files/grid.scad
new file mode 100644
index 0000000..95ea72a
--- /dev/null
+++ b/docs/files/grid.scad
@@ -0,0 +1,291 @@
+// Generated by SolidPython 1.0.5 on 2021-02-12 20:02:04
+
+
+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]]);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+/***********************************************
+********* 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.round_box(1, 1, 1, .25), "./docs/files/round_box.scad")
+s.scad_render_to_file(slp.round_flat_box(1, 1, 1, .25), "./docs/files/round_flat_box.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")
+
+
+************************************************/
diff --git a/docs/files/grid_inv.scad b/docs/files/grid_inv.scad
new file mode 100644
index 0000000..73304fb
--- /dev/null
+++ b/docs/files/grid_inv.scad
@@ -0,0 +1,294 @@
+// Generated by SolidPython 1.0.5 on 2021-02-12 20:02:04
+
+
+difference() {
+ cube(size = [118, 177, 1.5000000000]);
+ 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]]);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+/***********************************************
+********* 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.round_box(1, 1, 1, .25), "./docs/files/round_box.scad")
+s.scad_render_to_file(slp.round_flat_box(1, 1, 1, .25), "./docs/files/round_flat_box.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")
+
+
+************************************************/
diff --git a/docs/files/pill.scad b/docs/files/pill.scad
new file mode 100644
index 0000000..5f1ba6a
--- /dev/null
+++ b/docs/files/pill.scad
@@ -0,0 +1,35 @@
+// Generated by SolidPython 1.0.5 on 2021-02-12 20:02:04
+
+
+hull() {
+ translate(v = [0, 0, 0]) {
+ sphere($fn = 36, r = 0.2500000000);
+ }
+ translate(v = [1, 1, 1]) {
+ sphere($fn = 36, r = 0.2500000000);
+ }
+}
+/***********************************************
+********* 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.round_box(1, 1, 1, .25), "./docs/files/round_box.scad")
+s.scad_render_to_file(slp.round_flat_box(1, 1, 1, .25), "./docs/files/round_flat_box.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")
+
+
+************************************************/
diff --git a/docs/files/rcube.scad b/docs/files/rcube.scad
new file mode 100644
index 0000000..be73512
--- /dev/null
+++ b/docs/files/rcube.scad
@@ -0,0 +1,53 @@
+// Generated by SolidPython 1.0.5 on 2021-02-12 20:02:04
+
+
+hull() {
+ translate(v = [0.2500000000, 0.2500000000, 0.2500000000]) {
+ sphere(r = 0.2500000000);
+ }
+ translate(v = [0.2500000000, 0.2500000000, 0.7500000000]) {
+ sphere(r = 0.2500000000);
+ }
+ translate(v = [0.2500000000, 0.7500000000, 0.2500000000]) {
+ sphere(r = 0.2500000000);
+ }
+ translate(v = [0.2500000000, 0.7500000000, 0.7500000000]) {
+ sphere(r = 0.2500000000);
+ }
+ translate(v = [0.7500000000, 0.2500000000, 0.2500000000]) {
+ sphere(r = 0.2500000000);
+ }
+ translate(v = [0.7500000000, 0.2500000000, 0.7500000000]) {
+ sphere(r = 0.2500000000);
+ }
+ translate(v = [0.7500000000, 0.7500000000, 0.2500000000]) {
+ sphere(r = 0.2500000000);
+ }
+ translate(v = [0.7500000000, 0.7500000000, 0.7500000000]) {
+ sphere(r = 0.2500000000);
+ }
+}
+/***********************************************
+********* 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.round_box(1, 1, 1, .25), "./docs/files/round_box.scad")
+s.scad_render_to_file(slp.round_flat_box(1, 1, 1, .25), "./docs/files/round_flat_box.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")
+
+
+************************************************/
diff --git a/docs/files/round__flat_box.scad b/docs/files/round__flat_box.scad
deleted file mode 100644
index 7aa513d..0000000
--- a/docs/files/round__flat_box.scad
+++ /dev/null
@@ -1,23 +0,0 @@
-// Generated by SolidPython 1.0.5 on 2021-02-09 16:29:37
-
-
-translate(v = [0.2500000000, 0.2500000000, 0]) {
- minkowski() {
- cube(size = [0.5000000000, 0.5000000000, 0.5000000000]);
- cylinder($fn = 36, h = 0.5000000000, r = 0.2500000000);
- }
-}
-/***********************************************
-********* SolidPython code: **********
-************************************************
-
-# import solidLib as sl
-import solidLib.primitives as slp
-import solid as s
-
-
-s.scad_render_to_file(slp.round_box(1, 1, 1, .25), "./docs/files/round_box.scad")
-s.scad_render_to_file(slp.round_flat_box(1, 1, 1, .25), "./docs/files/round__flat_box.scad")
-
-
-************************************************/
diff --git a/docs/files/round_box.scad b/docs/files/round_box.scad
index 95415ae..3996a76 100644
--- a/docs/files/round_box.scad
+++ b/docs/files/round_box.scad
@@ -1,10 +1,10 @@
-// Generated by SolidPython 1.0.5 on 2021-02-09 16:31:15
+// Generated by SolidPython 1.0.5 on 2021-02-12 20:02:04
translate(v = [0.2500000000, 0.2500000000, 0.2500000000]) {
minkowski() {
cube(size = [0.5000000000, 0.5000000000, 0.5000000000]);
- sphere($fn = 36, r = 0.2500000000);
+ sphere($fn = 32, r = 0.2500000000);
}
}
/***********************************************
@@ -13,11 +13,21 @@ translate(v = [0.2500000000, 0.2500000000, 0.2500000000]) {
# 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.round_box(1, 1, 1, .25), "./docs/files/round_box.scad")
s.scad_render_to_file(slp.round_flat_box(1, 1, 1, .25), "./docs/files/round_flat_box.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")
************************************************/
diff --git a/docs/files/round_flat_box.scad b/docs/files/round_flat_box.scad
index f489d24..b2b5613 100644
--- a/docs/files/round_flat_box.scad
+++ b/docs/files/round_flat_box.scad
@@ -1,4 +1,4 @@
-// Generated by SolidPython 1.0.5 on 2021-02-09 16:31:15
+// Generated by SolidPython 1.0.5 on 2021-02-12 20:02:04
translate(v = [0.2500000000, 0.2500000000, 0]) {
@@ -13,11 +13,21 @@ translate(v = [0.2500000000, 0.2500000000, 0]) {
# 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.round_box(1, 1, 1, .25), "./docs/files/round_box.scad")
s.scad_render_to_file(slp.round_flat_box(1, 1, 1, .25), "./docs/files/round_flat_box.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")
************************************************/
diff --git a/docs/files/toolinlay1.scad b/docs/files/toolinlay1.scad
new file mode 100644
index 0000000..8f9029a
--- /dev/null
+++ b/docs/files/toolinlay1.scad
@@ -0,0 +1,1823 @@
+// Generated by SolidPython 1.0.5 on 2021-02-12 20:02:04
+
+
+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]) {
+ translate(v = [2, 2, 2]) {
+ minkowski() {
+ cube(size = [110, 169, 48]);
+ sphere($fn = 32, 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]) {
+ translate(v = [2, 2, 2]) {
+ minkowski() {
+ cube(size = [110, 169, 48]);
+ sphere($fn = 32, 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.round_box(1, 1, 1, .25), "./docs/files/round_box.scad")
+s.scad_render_to_file(slp.round_flat_box(1, 1, 1, .25), "./docs/files/round_flat_box.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")
+
+
+************************************************/
diff --git a/docs/files/toolinlay2.scad b/docs/files/toolinlay2.scad
new file mode 100644
index 0000000..ea9b959
--- /dev/null
+++ b/docs/files/toolinlay2.scad
@@ -0,0 +1,1785 @@
+// Generated by SolidPython 1.0.5 on 2021-02-12 20:02:04
+
+
+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]) {
+ translate(v = [2, 2, 2]) {
+ minkowski() {
+ cube(size = [110, 169, 48]);
+ sphere($fn = 32, 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]) {
+ translate(v = [2, 2, 2]) {
+ minkowski() {
+ cube(size = [110, 169, 48]);
+ sphere($fn = 32, 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.round_box(1, 1, 1, .25), "./docs/files/round_box.scad")
+s.scad_render_to_file(slp.round_flat_box(1, 1, 1, .25), "./docs/files/round_flat_box.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")
+
+
+************************************************/
diff --git a/docs/img/bin.png b/docs/img/bin.png
new file mode 100644
index 0000000..25bd3a6
Binary files /dev/null and b/docs/img/bin.png differ
diff --git a/docs/img/bin_toolinlay1.png b/docs/img/bin_toolinlay1.png
deleted file mode 100644
index e758915..0000000
Binary files a/docs/img/bin_toolinlay1.png and /dev/null differ
diff --git a/docs/img/bin_toolinlay2.png b/docs/img/bin_toolinlay2.png
deleted file mode 100644
index 9bde97d..0000000
Binary files a/docs/img/bin_toolinlay2.png and /dev/null differ
diff --git a/docs/img/grid.png b/docs/img/grid.png
index 9671c46..37db800 100644
Binary files a/docs/img/grid.png and b/docs/img/grid.png differ
diff --git a/docs/img/grid_inv.png b/docs/img/grid_inv.png
new file mode 100644
index 0000000..3dd994f
Binary files /dev/null and b/docs/img/grid_inv.png differ
diff --git a/docs/img/pill.png b/docs/img/pill.png
new file mode 100644
index 0000000..5f5f0f3
Binary files /dev/null and b/docs/img/pill.png differ
diff --git a/docs/img/rcube.png b/docs/img/rcube.png
new file mode 100644
index 0000000..33edacb
Binary files /dev/null and b/docs/img/rcube.png differ
diff --git a/docs/img/round_box.png b/docs/img/round_box.png
index 83fd4e8..aaa6fe8 100644
Binary files a/docs/img/round_box.png and b/docs/img/round_box.png differ
diff --git a/docs/img/round_flat_box.png b/docs/img/round_flat_box.png
index 9a6d536..9cbb328 100644
Binary files a/docs/img/round_flat_box.png and b/docs/img/round_flat_box.png differ
diff --git a/docs/img/toolinlay1.png b/docs/img/toolinlay1.png
new file mode 100644
index 0000000..fb29c59
Binary files /dev/null and b/docs/img/toolinlay1.png differ
diff --git a/docs/img/toolinlay2.png b/docs/img/toolinlay2.png
new file mode 100644
index 0000000..c3f6907
Binary files /dev/null and b/docs/img/toolinlay2.png differ
diff --git a/docs/solidLib.rst b/docs/solidLib.rst
index 8477e8d..d40ef0b 100644
--- a/docs/solidLib.rst
+++ b/docs/solidLib.rst
@@ -12,14 +12,6 @@ solidLib.assortment module
:undoc-members:
:show-inheritance:
-solidLib.globals module
------------------------
-
-.. automodule:: solidLib.globals
- :members:
- :undoc-members:
- :show-inheritance:
-
solidLib.primitives module
--------------------------
diff --git a/solidLib/__init__.py b/solidLib/__init__.py
index 18e515f..0710c10 100644
--- a/solidLib/__init__.py
+++ b/solidLib/__init__.py
@@ -1 +1,7 @@
-from .globals import SEGMENTS
+class settings:
+ """
+ global dolidLib settings
+ """
+ segments = 36
+ raster = 59
+ height = 67
diff --git a/solidLib/assortment.py b/solidLib/assortment.py
index 05024fe..d4e5428 100644
--- a/solidLib/assortment.py
+++ b/solidLib/assortment.py
@@ -74,6 +74,11 @@ def grid_inv(
def bin(x: float, y: float, h: float = 67, segments: int = 36, dim: float = 59):
+ """
+ standardized container
+
+ .. image:: img/bin.png
+ """
class dims:
wall = 2
r_in = 2
@@ -107,7 +112,7 @@ def toolinlay1(
creates a tooltray for alex container bins (2x3)
- .. image:: img/bin_toolinlay1.png
+ .. image:: img/toolinlay1.png
:param height: height of inset above lower bin
:param inset: depth of inset
@@ -166,7 +171,7 @@ def toolinlay2(
creates a tooltray for alex container bins (2x3)
- .. image:: img/bin_toolinlay2.png
+ .. image:: img/toolinlay2.png
:param height: height of inset above lower bin
:param r_tool: toolspace radius as float or list of floats
diff --git a/solidLib/globals.py b/solidLib/globals.py
deleted file mode 100644
index 394983f..0000000
--- a/solidLib/globals.py
+++ /dev/null
@@ -1 +0,0 @@
-SEGMENTS = 36
diff --git a/solidLib/primitives.py b/solidLib/primitives.py
index b4ab503..da072ea 100644
--- a/solidLib/primitives.py
+++ b/solidLib/primitives.py
@@ -2,8 +2,6 @@ from typing import List, Iterable
import solid as scad
-from .globals import SEGMENTS
-
import numpy as np
import logging as log
diff --git a/tests.py b/tests.py
index 44e05e4..69950d1 100644
--- a/tests.py
+++ b/tests.py
@@ -1,7 +1,17 @@
# 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.round_box(1, 1, 1, .25), "./docs/files/round_box.scad")
s.scad_render_to_file(slp.round_flat_box(1, 1, 1, .25), "./docs/files/round_flat_box.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")
|