[docs]def bin(x: float, y: float, h: float = 67):
"""
standardized container
.. image:: img/bin.png
"""
+
class dims:
wall = 2
r_in = 2
r_out = r_in + wall
-
bulk = slp.round_flat_box(dim * x, dim * y, h, dims.r_out)
-
hole = slp.round_box(dim * x - dims.wall * 2, dim * y - dims.wall * 2, h, dims.r_in)
+
bulk = slp.rfcube([sl.settings.raster * x, sl.settings.raster * y, h], sl.settings.raster.r_out)
+
hole = slp.rcube([sl.settings.raster * x - dims.wall * 2, sl.settings.raster * y - dims.wall * 2, h], dims.r_in)
hole = scad.translate([dims.wall, dims.wall, dims.wall])(hole)
-
wall_o = scad.cylinder(r=dims.r_out, h=dims.r_out, segments=segments)
+
wall_o = scad.cylinder(r=dims.r_out, h=dims.r_out, segments=sl.settings.segments)
g = grid(x, y)
@@ -226,8 +225,6 @@
r_tool: float = 7,
inset: float = 4,
maxh: float = 67,
-
dim: float = 59,
-
segments: int = 36
):
"""toolinlay1
@@ -244,19 +241,19 @@
r_in = 2
tool_ins = 3
-
base = slp.round_flat_box(x * dim, y * dim, height + inset, r_in + wall)
+
base = slp.rfcube([x * sl.settings.raster, y * sl.settings.raster, height + inset], r_in + wall)
toolindent = 0.1
toolindent_w = 2
-
toolbase_l = dim * x - 2 * wall - 2 * r_tool
+
toolbase_l = sl.settings.raster * x - 2 * wall - 2 * r_tool
toolbase_t = scad.cube([toolbase_l * (1 - toolindent), 0.001, tool_ins])
toolbase_b = scad.translate([toolbase_l * (1 - toolindent), 0, 0])(
scad.cube([toolbase_l * toolindent - toolindent_w, 0.001, tool_ins])
)
toolcutout = scad.minkowski()(
-
toolbase_t, scad.sphere(r=r_tool, segments=segments)
+
toolbase_t, scad.sphere(r=r_tool, segments=sl.settings.segments)
) + scad.minkowski()(
-
toolbase_b, scad.sphere(r=r_tool + toolindent_w, segments=segments)
+
toolbase_b, scad.sphere(r=r_tool + toolindent_w, segments=sl.settings.segments)
)
toolcutout = scad.translate(
@@ -264,14 +261,14 @@
)(toolcutout)
toolcutouts = []
-
for i in range((dim * y - 3 * wall) // (r_tool * 2 + 2 * toolindent_w)):
+
for i in range((sl.settings.raster * y - 3 * wall) // (r_tool * 2 + 2 * toolindent_w)):
toolcutouts.append(
scad.translate([0, i * (2 * r_tool + 2 * toolindent_w + 1.4), 0])(
scad.color("yellow")(toolcutout)
)
)
-
lower = bin(2, 3, h=maxh - height, dim=dim)
+
lower = bin(2, 3, h=maxh - height, dim=sl.settings.raster)
lower = scad.color("red", 0.5)(lower)
base = scad.translate([0, 0, maxh - height - inset])(base)
@@ -284,9 +281,7 @@
inset: float = 4,
inset_tool: float = 3,
maxh: float = 67,
-
dim: float = 59,
wall: float = 2,
-
segments: int = 36,
):
"""toolinlay2
@@ -299,14 +294,11 @@
:param inset: depth of toolinlay inset
:param inset_tool: depth of additional toolspace inset
:param maxh: system height restriction
-
:param dim: system raster dimension
-
:param segments: circular object segments
"""
-
x_dim = 2
-
y_dim = 3
+
x_dim = 3
r_in = 2
-
base = slp.round_flat_box(x_dim * dim, y_dim * dim, height + inset, r_in + wall)
+
base = slp.rfcube([x_dim * sl.settings.raster, y_dim * sl.settings.raster, height + inset], r_in + wall)
toolindent = 0.1
toolindent_w = 2
@@ -315,16 +307,16 @@
tool_rs = []
if not isinstance(r_tool, list):
tool_rs = [r_tool] * (
-
(dim * x_dim - 3 * wall) // (r_tool * 2 + 2 * toolindent_w) - 1
+
(sl.settings.raster * x_dim - 3 * wall) // (r_tool * 2 + 2 * toolindent_w) - 1
)
else:
tool_rs = r_tool
-
toolbase_l = dim * y_dim - 2 * wall - 2 * np.max(tool_rs)
+
toolbase_l = sl.settings.raster * y_dim - 2 * wall - 2 * np.max(tool_rs)
for i, r in enumerate(tool_rs):
toolbase_t = scad.cube([0.001, toolbase_l * (1 - toolindent), inset_tool])
# toolbase_b = scad.translate([0, toolbase_l * (1 - toolindent), 0])(
-
# scad.cube([0.001, toolbase_l * toolindent - toolindent_w, tool_ins])
+
# scad.cube([0.001, toolbase_l * toolindent - toolindent_w, tool_ins])
# )
toolcutout = slp.pill(
np.array([[0, 0, 0], [0, toolbase_l, 0], [0, toolbase_l, 10], [0, 0, 10]])
@@ -348,12 +340,12 @@
[
[0, 0, 0],
[0, toolindent * toolbase_l, 0],
-
[dim * x_dim - 2 * wall - 2 * 9, 0, 0],
-
[dim * x_dim - 2 * wall - 2 * 9, toolindent * toolbase_l, 0],
+
[sl.settings.raster * x_dim - 2 * wall - 2 * 9, 0, 0],
+
[sl.settings.raster * x_dim - 2 * wall - 2 * 9, toolindent * toolbase_l, 0],
[0, 0, 10],
[0, toolindent * toolbase_l, 10],
-
[dim * x_dim - 2 * wall - 2 * 9, 0, 10],
-
[dim * x_dim - 2 * wall - 2 * 9, toolindent * toolbase_l, 10],
+
[sl.settings.raster * x_dim - 2 * wall - 2 * 9, 0, 10],
+
[sl.settings.raster * x_dim - 2 * wall - 2 * 9, toolindent * toolbase_l, 10],
]
)
+ [9 + wall, 9 + wall, maxh - inset_tool],
@@ -361,14 +353,19 @@
)
)
toolcutouts.append(
-
scad.translate((wall * 2,wall * 2,0))(
-
slp.round_flat_box(
-
toolindent * toolbase_l + 2 * 9, toolindent * toolbase_l + 2 * 9 - wall, 100, 9-wall, segments=segments
+
scad.translate((wall * 2, wall * 2, 0))(
+
slp.rfcube(
+
[
+
toolindent * toolbase_l + 2 * 9,
+
toolindent * toolbase_l + 2 * 9 - wall,
+
100,
+
],
+
9 - wall,
)
)
)
-
lower = bin(2, 3, h=maxh - height, dim=dim)
+
lower = bin(2, 3, h=maxh - height, dim=sl.settings.raster)
lower = scad.color("red", 0.5)(lower)
base = scad.translate([0, 0, maxh - height - inset])(base)
diff --git a/docs/_build/html/_modules/solidLib/primitives.html b/docs/_build/html/_modules/solidLib/primitives.html
index 967561b..16f8937 100644
--- a/docs/_build/html/_modules/solidLib/primitives.html
+++ b/docs/_build/html/_modules/solidLib/primitives.html
@@ -123,35 +123,19 @@
import solid as scad
+
import solidLib as sl
+
import numpy as np
import logging as log
log.basicConfig(level=log.INFO)
-
[docs]def round_box(x_dim: float, y_dim: float, z_dim: float, radius: float, segments: int = 32):
-
"""
-
creates a round box with radius r
-
Args:
-
x_dim (float): .
-
-
Important:
-
deprecated
-
-
.. image:: img/round_box.png
-
"""
-
box = scad.cube([x_dim - 2 * radius, y_dim - 2 * radius, z_dim - 2 * radius])
-
wall = scad.sphere(r=radius, segments=segments)
-
-
return scad.translate([radius, radius, radius])(
-
scad.minkowski()(box, wall)
-
)
-
-
[docs]def rcube(dim: Iterable[float], radius: float, segments: int = 32):
+
[docs]def rcube(dim: Iterable[float], radius: float):
"""
creates a cube with rounded corners
-
.. image:: img/round_box.png
+
.. image:: img/rcube.png
Args:
dim: cube dimensions to base box on.
@@ -164,29 +148,30 @@
for dy in [radius, dim[1] - radius]:
for dz in [radius, dim[2] - radius]:
corners.append(
-
scad.translate([dx, dy, dz])((
-
scad.sphere(r=radius)
-
))
+
scad.translate([dx, dy, dz])(
+
(scad.sphere(r=radius, segments=sl.settings.segments))
+
)
)
return scad.hull()(*corners)
-
[docs]def round_flat_box(x: float, y: float, z: float, r: float, segments: int = 32):
+
+
[docs]def rfcube(dim: Iterable[float], r: float):
"""creates a round box with radius r and flat top/bottom
-
.. image:: img/round_flat_box.png
+
.. image:: img/round_flat_box.png
"""
-
box = scad.cube([x - 2 * r, y - 2 * r, z- 2 * r])
-
wall = scad.cylinder(r=r, h=2*r, segments=SEGMENTS)
+
box = scad.cube([dim[0] - 2 * r, dim[1] - 2 * r, dim[2] - 2 * r])
+
wall = scad.cylinder(r=r, h=2 * r, segments=sl.settings.segments)
-
return scad.translate([r, r, 0])(
-
scad.minkowski()(box, wall)
-
)
+
return scad.translate([r, r, 0])(scad.minkowski()(box, wall))
[docs]def pill(ps: List[List[float]], r, segments: int = 36):
"""
create a pill around given points
+
+
.. image:: img/pill.png
"""
if len(ps) < 2:
raise Exception("requires 2 or more points")
@@ -195,9 +180,7 @@
spheres = []
# log.info(ps)
for p in ps:
-
spheres.append(
-
scad.translate(p)(s)
-
)
+
spheres.append(scad.translate(p)(s))
return scad.hull()(*spheres)
diff --git a/docs/_build/html/genindex.html b/docs/_build/html/genindex.html
index c4661e5..c4e2cd3 100644
--- a/docs/_build/html/genindex.html
+++ b/docs/_build/html/genindex.html
@@ -189,14 +189,12 @@
diff --git a/docs/_build/html/objects.inv b/docs/_build/html/objects.inv
index 51f11b2..5410361 100644
Binary files a/docs/_build/html/objects.inv and b/docs/_build/html/objects.inv differ
diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js
index ce7bd23..b92253b 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,""],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
+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,""],rfcube:[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:[],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,rfbox:[],rfcube:1,round:1,round_box:[],round_flat_box:[],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:[],z_dim:[]},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 2700135..4adecd2 100644
--- a/docs/_build/html/solidLib.html
+++ b/docs/_build/html/solidLib.html
@@ -149,14 +149,14 @@
solidLib.assortment module
-
-
solidLib.assortment.
bin
(x: float, y: float, h: float = 67, segments: int = 36, dim: float = 59)[source]
+solidLib.assortment.
bin
(x: float, y: float, h: float = 67)[source]
standardized container
-
-
solidLib.assortment.
grid
(x_dim: int, y: int, w: float = 3, h: float = 1.5, fillet: bool = False, dim: float = 59, segments: int = 36)[source]
+solidLib.assortment.
grid
(x_dim: int, y: int, w: float = 3, h: float = 1.5, fillet: bool = False)[source]
generate a grid of (flattened) triangles with or without fillet
the generated grid is x by y in size with a gridspace of size dim,
the triangles used for the base structure is given by their height and width
@@ -165,12 +165,12 @@ the triangles used for the base structure is given by their height and width
-
-
solidLib.assortment.
grid_inv
(x: float, y: float, w: float = 3, h: float = 1.5, fillet: bool = False, dim: float = 59, segments: int = 36)[source]
+solidLib.assortment.
grid_inv
(x: float, y: float, w: float = 3, h: float = 1.5, fillet: bool = False)[source]
-
-
solidLib.assortment.
toolinlay1
(height: float, *args, r_tool: float = 7, inset: float = 4, maxh: float = 67, dim: float = 59, segments: int = 36)[source]
+solidLib.assortment.
toolinlay1
(height: float, *args, r_tool: float = 7, inset: float = 4, maxh: float = 67)[source]
creates a tooltray for alex container bins (2x3)
@@ -185,7 +185,7 @@ the triangles used for the base structure is given by their height and width
-
-
solidLib.assortment.
toolinlay2
(height: float, r_tool: Union[float, Iterable[float]] = 7, inset: float = 4, inset_tool: float = 3, maxh: float = 67, dim: float = 59, wall: float = 2, segments: int = 36)[source]
+solidLib.assortment.
toolinlay2
(height: float, r_tool: Union[float, Iterable[float]] = 7, inset: float = 4, inset_tool: float = 3, maxh: float = 67, wall: float = 2)[source]
creates a tooltray for alex container bins (2x3)
@@ -196,8 +196,6 @@ the triangles used for the base structure is given by their height and width
inset – depth of toolinlay inset
inset_tool – depth of additional toolspace inset
maxh – system height restriction
-dim – system raster dimension
-segments – circular object segments
@@ -210,13 +208,14 @@ the triangles used for the base structure is given by their height and width
-
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]
+solidLib.primitives.
rcube
(dim: Iterable[float], radius: float)[source]
creates a cube with rounded corners
-
+
- Parameters
@@ -229,25 +228,8 @@ the triangles used for the base structure is given by their height and width
--
-
solidLib.primitives.
round_box
(x_dim: float, y_dim: float, z_dim: float, radius: float, segments: int = 32)[source]
-creates a round box with radius r
-
-- Parameters
-x_dim (float) –
.
-
-
-
-
-
-
-
-
--
-
solidLib.primitives.
round_flat_box
(x: float, y: float, z: float, r: float, segments: int = 32)[source]
+-
+
solidLib.primitives.
rfcube
(dim: Iterable[float], r: float)[source]
creates a round box with radius r and flat top/bottom
diff --git a/docs/files/bin.scad b/docs/files/bin.scad
index 5926714..d35fdbb 100644
--- a/docs/files/bin.scad
+++ b/docs/files/bin.scad
@@ -1,4 +1,4 @@
-// Generated by SolidPython 1.0.5 on 2021-02-12 20:02:04
+// Generated by SolidPython 1.0.5 on 2021-02-14 10:24:57
union() {
@@ -10,10 +10,30 @@ union() {
}
}
translate(v = [2, 2, 2]) {
- translate(v = [2, 2, 2]) {
- minkowski() {
- cube(size = [51, 51, 63]);
- sphere($fn = 32, r = 2);
+ hull() {
+ translate(v = [2, 2, 2]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [2, 2, 65]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [2, 53, 2]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [2, 53, 65]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [53, 2, 2]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [53, 2, 65]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [53, 53, 2]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [53, 53, 65]) {
+ sphere($fn = 36, r = 2);
}
}
}
@@ -474,10 +494,30 @@ union() {
}
}
translate(v = [2, 2, 2]) {
- translate(v = [2, 2, 2]) {
- minkowski() {
- cube(size = [51, 51, 63]);
- sphere($fn = 32, r = 2);
+ hull() {
+ translate(v = [2, 2, 2]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [2, 2, 65]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [2, 53, 2]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [2, 53, 65]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [53, 2, 2]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [53, 2, 65]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [53, 53, 2]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [53, 53, 65]) {
+ sphere($fn = 36, r = 2);
}
}
}
@@ -495,8 +535,7 @@ 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(slp.rfcube([1, 1, 1], .25), "./docs/files/rfcube.scad")
s.scad_render_to_file(sla.bin(1, 1), "./docs/files/bin.scad")
s.scad_render_to_file(sla.grid(2,3), "docs/files/grid.scad")
diff --git a/docs/files/grid.scad b/docs/files/grid.scad
index 95ea72a..c0ebcb8 100644
--- a/docs/files/grid.scad
+++ b/docs/files/grid.scad
@@ -1,4 +1,4 @@
-// Generated by SolidPython 1.0.5 on 2021-02-12 20:02:04
+// Generated by SolidPython 1.0.5 on 2021-02-14 10:24:57
union() {
@@ -277,8 +277,7 @@ 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(slp.rfcube([1, 1, 1], .25), "./docs/files/rfcube.scad")
s.scad_render_to_file(sla.bin(1, 1), "./docs/files/bin.scad")
s.scad_render_to_file(sla.grid(2,3), "docs/files/grid.scad")
diff --git a/docs/files/grid_inv.scad b/docs/files/grid_inv.scad
index 73304fb..f468764 100644
--- a/docs/files/grid_inv.scad
+++ b/docs/files/grid_inv.scad
@@ -1,4 +1,4 @@
-// Generated by SolidPython 1.0.5 on 2021-02-12 20:02:04
+// Generated by SolidPython 1.0.5 on 2021-02-14 10:24:57
difference() {
@@ -280,8 +280,7 @@ 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(slp.rfcube([1, 1, 1], .25), "./docs/files/rfcube.scad")
s.scad_render_to_file(sla.bin(1, 1), "./docs/files/bin.scad")
s.scad_render_to_file(sla.grid(2,3), "docs/files/grid.scad")
diff --git a/docs/files/pill.scad b/docs/files/pill.scad
index 5f1ba6a..a4dea1c 100644
--- a/docs/files/pill.scad
+++ b/docs/files/pill.scad
@@ -1,4 +1,4 @@
-// Generated by SolidPython 1.0.5 on 2021-02-12 20:02:04
+// Generated by SolidPython 1.0.5 on 2021-02-14 10:24:57
hull() {
@@ -21,8 +21,7 @@ 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(slp.rfcube([1, 1, 1], .25), "./docs/files/rfcube.scad")
s.scad_render_to_file(sla.bin(1, 1), "./docs/files/bin.scad")
s.scad_render_to_file(sla.grid(2,3), "docs/files/grid.scad")
diff --git a/docs/files/rcube.scad b/docs/files/rcube.scad
index be73512..9a859d6 100644
--- a/docs/files/rcube.scad
+++ b/docs/files/rcube.scad
@@ -1,30 +1,30 @@
-// Generated by SolidPython 1.0.5 on 2021-02-12 20:02:04
+// Generated by SolidPython 1.0.5 on 2021-02-14 10:24:57
hull() {
translate(v = [0.2500000000, 0.2500000000, 0.2500000000]) {
- sphere(r = 0.2500000000);
+ sphere($fn = 36, r = 0.2500000000);
}
translate(v = [0.2500000000, 0.2500000000, 0.7500000000]) {
- sphere(r = 0.2500000000);
+ sphere($fn = 36, r = 0.2500000000);
}
translate(v = [0.2500000000, 0.7500000000, 0.2500000000]) {
- sphere(r = 0.2500000000);
+ sphere($fn = 36, r = 0.2500000000);
}
translate(v = [0.2500000000, 0.7500000000, 0.7500000000]) {
- sphere(r = 0.2500000000);
+ sphere($fn = 36, r = 0.2500000000);
}
translate(v = [0.7500000000, 0.2500000000, 0.2500000000]) {
- sphere(r = 0.2500000000);
+ sphere($fn = 36, r = 0.2500000000);
}
translate(v = [0.7500000000, 0.2500000000, 0.7500000000]) {
- sphere(r = 0.2500000000);
+ sphere($fn = 36, r = 0.2500000000);
}
translate(v = [0.7500000000, 0.7500000000, 0.2500000000]) {
- sphere(r = 0.2500000000);
+ sphere($fn = 36, r = 0.2500000000);
}
translate(v = [0.7500000000, 0.7500000000, 0.7500000000]) {
- sphere(r = 0.2500000000);
+ sphere($fn = 36, r = 0.2500000000);
}
}
/***********************************************
@@ -39,8 +39,7 @@ 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(slp.rfcube([1, 1, 1], .25), "./docs/files/rfcube.scad")
s.scad_render_to_file(sla.bin(1, 1), "./docs/files/bin.scad")
s.scad_render_to_file(sla.grid(2,3), "docs/files/grid.scad")
diff --git a/docs/files/rfcube.scad b/docs/files/rfcube.scad
new file mode 100644
index 0000000..bb47c36
--- /dev/null
+++ b/docs/files/rfcube.scad
@@ -0,0 +1,32 @@
+// Generated by SolidPython 1.0.5 on 2021-02-14 10:24:57
+
+
+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 solidLib.assortment as sla
+import solid as s
+
+
+s.scad_render_to_file(slp.pill([[0,0,0],[1, 1, 1]], .25), "./docs/files/pill.scad")
+s.scad_render_to_file(slp.rcube([1, 1, 1], .25), "./docs/files/rcube.scad")
+s.scad_render_to_file(slp.rfcube([1, 1, 1], .25), "./docs/files/rfcube.scad")
+
+s.scad_render_to_file(sla.bin(1, 1), "./docs/files/bin.scad")
+s.scad_render_to_file(sla.grid(2,3), "docs/files/grid.scad")
+s.scad_render_to_file(sla.grid_inv(2,3), "docs/files/grid_inv.scad")
+
+s.scad_render_to_file(sla.toolinlay1(15), "docs/files/toolinlay1.scad")
+s.scad_render_to_file(sla.toolinlay2(15), "docs/files/toolinlay2.scad")
+
+
+************************************************/
diff --git a/docs/files/round_flat_box.scad b/docs/files/round_flat_box.scad
index b2b5613..e342fb2 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-12 20:02:04
+// Generated by SolidPython 1.0.5 on 2021-02-14 10:21:44
translate(v = [0.2500000000, 0.2500000000, 0]) {
@@ -19,8 +19,7 @@ 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(slp.rfcube([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")
diff --git a/docs/files/toolinlay1.scad b/docs/files/toolinlay1.scad
index 8f9029a..c7be763 100644
--- a/docs/files/toolinlay1.scad
+++ b/docs/files/toolinlay1.scad
@@ -1,4 +1,4 @@
-// Generated by SolidPython 1.0.5 on 2021-02-12 20:02:04
+// Generated by SolidPython 1.0.5 on 2021-02-14 10:24:57
difference() {
@@ -20,10 +20,30 @@ difference() {
}
}
translate(v = [2, 2, 2]) {
- translate(v = [2, 2, 2]) {
- minkowski() {
- cube(size = [110, 169, 48]);
- sphere($fn = 32, r = 2);
+ hull() {
+ translate(v = [2, 2, 2]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [2, 2, 50]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [2, 171, 2]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [2, 171, 50]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [112, 2, 2]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [112, 2, 50]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [112, 171, 2]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [112, 171, 50]) {
+ sphere($fn = 36, r = 2);
}
}
}
@@ -1624,10 +1644,30 @@ difference() {
}
}
translate(v = [2, 2, 2]) {
- translate(v = [2, 2, 2]) {
- minkowski() {
- cube(size = [110, 169, 48]);
- sphere($fn = 32, r = 2);
+ hull() {
+ translate(v = [2, 2, 2]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [2, 2, 50]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [2, 171, 2]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [2, 171, 50]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [112, 2, 2]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [112, 2, 50]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [112, 171, 2]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [112, 171, 50]) {
+ sphere($fn = 36, r = 2);
}
}
}
@@ -1809,8 +1849,7 @@ 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(slp.rfcube([1, 1, 1], .25), "./docs/files/rfcube.scad")
s.scad_render_to_file(sla.bin(1, 1), "./docs/files/bin.scad")
s.scad_render_to_file(sla.grid(2,3), "docs/files/grid.scad")
diff --git a/docs/files/toolinlay2.scad b/docs/files/toolinlay2.scad
index ea9b959..5dc39ee 100644
--- a/docs/files/toolinlay2.scad
+++ b/docs/files/toolinlay2.scad
@@ -1,4 +1,4 @@
-// Generated by SolidPython 1.0.5 on 2021-02-12 20:02:04
+// Generated by SolidPython 1.0.5 on 2021-02-14 10:24:57
difference() {
@@ -20,10 +20,30 @@ difference() {
}
}
translate(v = [2, 2, 2]) {
- translate(v = [2, 2, 2]) {
- minkowski() {
- cube(size = [110, 169, 48]);
- sphere($fn = 32, r = 2);
+ hull() {
+ translate(v = [2, 2, 2]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [2, 2, 50]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [2, 171, 2]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [2, 171, 50]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [112, 2, 2]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [112, 2, 50]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [112, 171, 2]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [112, 171, 50]) {
+ sphere($fn = 36, r = 2);
}
}
}
@@ -1624,10 +1644,30 @@ difference() {
}
}
translate(v = [2, 2, 2]) {
- translate(v = [2, 2, 2]) {
- minkowski() {
- cube(size = [110, 169, 48]);
- sphere($fn = 32, r = 2);
+ hull() {
+ translate(v = [2, 2, 2]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [2, 2, 50]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [2, 171, 2]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [2, 171, 50]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [112, 2, 2]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [112, 2, 50]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [112, 171, 2]) {
+ sphere($fn = 36, r = 2);
+ }
+ translate(v = [112, 171, 50]) {
+ sphere($fn = 36, r = 2);
}
}
}
@@ -1771,8 +1811,7 @@ 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(slp.rfcube([1, 1, 1], .25), "./docs/files/rfcube.scad")
s.scad_render_to_file(sla.bin(1, 1), "./docs/files/bin.scad")
s.scad_render_to_file(sla.grid(2,3), "docs/files/grid.scad")
diff --git a/docs/img/bin.png b/docs/img/bin.png
index 25bd3a6..eeb56ca 100644
Binary files a/docs/img/bin.png and b/docs/img/bin.png differ
diff --git a/docs/img/rcube.png b/docs/img/rcube.png
index 33edacb..4299747 100644
Binary files a/docs/img/rcube.png and b/docs/img/rcube.png differ
diff --git a/docs/img/rfcube.png b/docs/img/rfcube.png
new file mode 100644
index 0000000..9cbb328
Binary files /dev/null and b/docs/img/rfcube.png differ
diff --git a/docs/img/toolinlay1.png b/docs/img/toolinlay1.png
index fb29c59..725bc95 100644
Binary files a/docs/img/toolinlay1.png and b/docs/img/toolinlay1.png differ
diff --git a/docs/img/toolinlay2.png b/docs/img/toolinlay2.png
index c3f6907..ea2a408 100644
Binary files a/docs/img/toolinlay2.png and b/docs/img/toolinlay2.png differ
diff --git a/solidLib/assortment.py b/solidLib/assortment.py
index d4e5428..9a664c7 100644
--- a/solidLib/assortment.py
+++ b/solidLib/assortment.py
@@ -1,8 +1,10 @@
import numpy as np
import solid as scad
from . import primitives as slp
+import solidLib as sl
from typing import Union, Iterable
+
# import .primitives as slp
@@ -12,8 +14,6 @@ def grid(
w: float = 3,
h: float = 1.5,
fillet: bool = False,
- dim: float = 59,
- segments: int = 36,
):
"""generate a grid of (flattened) triangles with or without fillet
@@ -28,7 +28,7 @@ def grid(
out = scad.polygon([[0, 0], [w / 2, 0], [w / 2 - h, h], [0, h]])
else:
out = scad.polygon([[0, 0], [w / 2, 0], [0, h]])
- out = scad.linear_extrude(dim)(out)
+ out = scad.linear_extrude(sl.settings.raster)(out)
out = scad.rotate([90, 0, 90])(out)
if fillet:
@@ -37,25 +37,25 @@ def grid(
scallop = slp.pill(
[
[0, 0, 0],
- [dim - 2 * h - (w - 2 * h), 0, 0],
+ [dsl.settings.raster - 2 * h - (w - 2 * h), 0, 0],
# [0,0,h], [dim - 2 * h - (w - 2 * h),0,h]
],
h,
- segments=segments,
+ segments=sl.settings.segments,
)
- scallop += scad.rotate((0, -90, 0))(scallop) + scad.translate([dim - w, 0, 0])(
+ scallop += scad.rotate((0, -90, 0))(scallop) + scad.translate([sl.settings.raster - w, 0, 0])(
scad.rotate([0, -90, 0])(scallop)
)
scallop = scad.translate((w / 2, w / 2, h))(scallop)
out -= scallop
- out += scad.translate((0, dim, 0))(scad.rotate((0, 0, -90))(out))
- out += scad.translate((dim, dim, 0))(scad.rotate((0, 0, 180))(out))
+ out += scad.translate((0, sl.settings.raster, 0))(scad.rotate((0, 0, -90))(out))
+ out += scad.translate((sl.settings.raster, sl.settings.raster, 0))(scad.rotate((0, 0, 180))(out))
result = out
for dx in range(x_dim):
for dy in range(y):
- result += scad.translate((dim * dx, dim * dy, 0))(out)
+ result += scad.translate((sl.settings.raster * dx, sl.settings.raster * dy, 0))(out)
return result
@@ -66,29 +66,28 @@ def grid_inv(
w: float = 3,
h: float = 1.5,
fillet: bool = False,
- dim: float = 59,
- segments: int = 36,
):
- g = grid(x, y, w, h, fillet, dim, segments)
- return scad.cube([x * dim, y * dim, h]) - g
+ g = grid(x, y, w, h, fillet, sl.settings.raster, sl.settings.segments)
+ return scad.cube([x * sl.settings.raster, y * sl.settings.raster, h]) - g
-def bin(x: float, y: float, h: float = 67, segments: int = 36, dim: float = 59):
+def bin(x: float, y: float, h: float = 67):
"""
standardized container
.. image:: img/bin.png
"""
+
class dims:
wall = 2
r_in = 2
r_out = r_in + wall
- bulk = slp.round_flat_box(dim * x, dim * y, h, dims.r_out)
- hole = slp.round_box(dim * x - dims.wall * 2, dim * y - dims.wall * 2, h, dims.r_in)
+ bulk = slp.rfcube([sl.settings.raster * x, sl.settings.raster * y, h], sl.settings.raster.r_out)
+ hole = slp.rcube([sl.settings.raster * x - dims.wall * 2, sl.settings.raster * y - dims.wall * 2, h], dims.r_in)
hole = scad.translate([dims.wall, dims.wall, dims.wall])(hole)
- wall_o = scad.cylinder(r=dims.r_out, h=dims.r_out, segments=segments)
+ wall_o = scad.cylinder(r=dims.r_out, h=dims.r_out, segments=sl.settings.segments)
g = grid(x, y)
@@ -105,8 +104,6 @@ def toolinlay1(
r_tool: float = 7,
inset: float = 4,
maxh: float = 67,
- dim: float = 59,
- segments: int = 36
):
"""toolinlay1
@@ -123,19 +120,19 @@ def toolinlay1(
r_in = 2
tool_ins = 3
- base = slp.round_flat_box(x * dim, y * dim, height + inset, r_in + wall)
+ base = slp.rfcube([x * sl.settings.raster, y * sl.settings.raster, height + inset], r_in + wall)
toolindent = 0.1
toolindent_w = 2
- toolbase_l = dim * x - 2 * wall - 2 * r_tool
+ toolbase_l = sl.settings.raster * x - 2 * wall - 2 * r_tool
toolbase_t = scad.cube([toolbase_l * (1 - toolindent), 0.001, tool_ins])
toolbase_b = scad.translate([toolbase_l * (1 - toolindent), 0, 0])(
scad.cube([toolbase_l * toolindent - toolindent_w, 0.001, tool_ins])
)
toolcutout = scad.minkowski()(
- toolbase_t, scad.sphere(r=r_tool, segments=segments)
+ toolbase_t, scad.sphere(r=r_tool, segments=sl.settings.segments)
) + scad.minkowski()(
- toolbase_b, scad.sphere(r=r_tool + toolindent_w, segments=segments)
+ toolbase_b, scad.sphere(r=r_tool + toolindent_w, segments=sl.settings.segments)
)
toolcutout = scad.translate(
@@ -143,14 +140,14 @@ def toolinlay1(
)(toolcutout)
toolcutouts = []
- for i in range((dim * y - 3 * wall) // (r_tool * 2 + 2 * toolindent_w)):
+ for i in range((sl.settings.raster * y - 3 * wall) // (r_tool * 2 + 2 * toolindent_w)):
toolcutouts.append(
scad.translate([0, i * (2 * r_tool + 2 * toolindent_w + 1.4), 0])(
scad.color("yellow")(toolcutout)
)
)
- lower = bin(2, 3, h=maxh - height, dim=dim)
+ lower = bin(2, 3, h=maxh - height, dim=sl.settings.raster)
lower = scad.color("red", 0.5)(lower)
base = scad.translate([0, 0, maxh - height - inset])(base)
@@ -163,9 +160,7 @@ def toolinlay2(
inset: float = 4,
inset_tool: float = 3,
maxh: float = 67,
- dim: float = 59,
wall: float = 2,
- segments: int = 36,
):
"""toolinlay2
@@ -178,14 +173,11 @@ def toolinlay2(
:param inset: depth of toolinlay inset
:param inset_tool: depth of additional toolspace inset
:param maxh: system height restriction
- :param dim: system raster dimension
- :param segments: circular object segments
"""
- x_dim = 2
- y_dim = 3
+ x_dim = 3
r_in = 2
- base = slp.round_flat_box(x_dim * dim, y_dim * dim, height + inset, r_in + wall)
+ base = slp.rfcube([x_dim * sl.settings.raster, y_dim * sl.settings.raster, height + inset], r_in + wall)
toolindent = 0.1
toolindent_w = 2
@@ -194,16 +186,16 @@ def toolinlay2(
tool_rs = []
if not isinstance(r_tool, list):
tool_rs = [r_tool] * (
- (dim * x_dim - 3 * wall) // (r_tool * 2 + 2 * toolindent_w) - 1
+ (sl.settings.raster * x_dim - 3 * wall) // (r_tool * 2 + 2 * toolindent_w) - 1
)
else:
tool_rs = r_tool
- toolbase_l = dim * y_dim - 2 * wall - 2 * np.max(tool_rs)
+ toolbase_l = sl.settings.raster * y_dim - 2 * wall - 2 * np.max(tool_rs)
for i, r in enumerate(tool_rs):
toolbase_t = scad.cube([0.001, toolbase_l * (1 - toolindent), inset_tool])
# toolbase_b = scad.translate([0, toolbase_l * (1 - toolindent), 0])(
- # scad.cube([0.001, toolbase_l * toolindent - toolindent_w, tool_ins])
+ # scad.cube([0.001, toolbase_l * toolindent - toolindent_w, tool_ins])
# )
toolcutout = slp.pill(
np.array([[0, 0, 0], [0, toolbase_l, 0], [0, toolbase_l, 10], [0, 0, 10]])
@@ -227,12 +219,12 @@ def toolinlay2(
[
[0, 0, 0],
[0, toolindent * toolbase_l, 0],
- [dim * x_dim - 2 * wall - 2 * 9, 0, 0],
- [dim * x_dim - 2 * wall - 2 * 9, toolindent * toolbase_l, 0],
+ [sl.settings.raster * x_dim - 2 * wall - 2 * 9, 0, 0],
+ [sl.settings.raster * x_dim - 2 * wall - 2 * 9, toolindent * toolbase_l, 0],
[0, 0, 10],
[0, toolindent * toolbase_l, 10],
- [dim * x_dim - 2 * wall - 2 * 9, 0, 10],
- [dim * x_dim - 2 * wall - 2 * 9, toolindent * toolbase_l, 10],
+ [sl.settings.raster * x_dim - 2 * wall - 2 * 9, 0, 10],
+ [sl.settings.raster * x_dim - 2 * wall - 2 * 9, toolindent * toolbase_l, 10],
]
)
+ [9 + wall, 9 + wall, maxh - inset_tool],
@@ -240,14 +232,19 @@ def toolinlay2(
)
)
toolcutouts.append(
- scad.translate((wall * 2,wall * 2,0))(
- slp.round_flat_box(
- toolindent * toolbase_l + 2 * 9, toolindent * toolbase_l + 2 * 9 - wall, 100, 9-wall, segments=segments
+ scad.translate((wall * 2, wall * 2, 0))(
+ slp.rfcube(
+ [
+ toolindent * toolbase_l + 2 * 9,
+ toolindent * toolbase_l + 2 * 9 - wall,
+ 100,
+ ],
+ 9 - wall,
)
)
)
- lower = bin(2, 3, h=maxh - height, dim=dim)
+ lower = bin(2, 3, h=maxh - height, dim=sl.settings.raster)
lower = scad.color("red", 0.5)(lower)
base = scad.translate([0, 0, maxh - height - inset])(base)
diff --git a/solidLib/primitives.py b/solidLib/primitives.py
index a2c3a53..2637b89 100644
--- a/solidLib/primitives.py
+++ b/solidLib/primitives.py
@@ -9,30 +9,12 @@ import logging as log
log.basicConfig(level=log.INFO)
-def round_box(x_dim: float, y_dim: float, z_dim: float, radius: float, segments: int = 32):
- """
- creates a round box with radius r
- Args:
- x_dim (float): .
-
- Important:
- deprecated
-
- .. image:: img/round_box.png
- """
- box = scad.cube([x_dim - 2 * radius, y_dim - 2 * radius, z_dim - 2 * radius])
- wall = scad.sphere(r=radius, segments=segments)
-
- return scad.translate([radius, radius, radius])(
- scad.minkowski()(box, wall)
- )
-
-def rcube(dim: Iterable[float], radius: float, segments: int = 32):
+def rcube(dim: Iterable[float], radius: float):
"""
creates a cube with rounded corners
- .. image:: img/round_box.png
+ .. image:: img/rcube.png
Args:
dim: cube dimensions to base box on.
@@ -45,29 +27,30 @@ def rcube(dim: Iterable[float], radius: float, segments: int = 32):
for dy in [radius, dim[1] - radius]:
for dz in [radius, dim[2] - radius]:
corners.append(
- scad.translate([dx, dy, dz])((
- scad.sphere(r=radius)
- ))
+ scad.translate([dx, dy, dz])(
+ (scad.sphere(r=radius, segments=sl.settings.segments))
+ )
)
return scad.hull()(*corners)
-def round_flat_box(x: float, y: float, z: float, r: float, segments: int = 32):
+
+def rfcube(dim: Iterable[float], r: float):
"""creates a round box with radius r and flat top/bottom
- .. image:: img/round_flat_box.png
+ .. image:: img/round_flat_box.png
"""
- box = scad.cube([x - 2 * r, y - 2 * r, z- 2 * r])
- wall = scad.cylinder(r=r, h=2*r, segments=sl.settings.segments)
+ box = scad.cube([dim[0] - 2 * r, dim[1] - 2 * r, dim[2] - 2 * r])
+ wall = scad.cylinder(r=r, h=2 * r, segments=sl.settings.segments)
- return scad.translate([r, r, 0])(
- scad.minkowski()(box, wall)
- )
+ return scad.translate([r, r, 0])(scad.minkowski()(box, wall))
def pill(ps: List[List[float]], r, segments: int = 36):
"""
create a pill around given points
+
+ .. image:: img/pill.png
"""
if len(ps) < 2:
raise Exception("requires 2 or more points")
@@ -76,8 +59,6 @@ def pill(ps: List[List[float]], r, segments: int = 36):
spheres = []
# log.info(ps)
for p in ps:
- spheres.append(
- scad.translate(p)(s)
- )
+ spheres.append(scad.translate(p)(s))
return scad.hull()(*spheres)
diff --git a/tests.py b/tests.py
index 69950d1..9eca9dd 100644
--- a/tests.py
+++ b/tests.py
@@ -6,8 +6,7 @@ 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(slp.rfcube([1, 1, 1], .25), "./docs/files/rfcube.scad")
s.scad_render_to_file(sla.bin(1, 1), "./docs/files/bin.scad")
s.scad_render_to_file(sla.grid(2,3), "docs/files/grid.scad")