diff --git a/snub-dodecahedron/README.md b/snub-dodecahedron/README.md index edde09a..3b55a18 100644 --- a/snub-dodecahedron/README.md +++ b/snub-dodecahedron/README.md @@ -81,11 +81,11 @@ sudo apt-get install openscad # or https://openscad.org ## Usage ```bash -# default: 30 mm edges, 3 mm thick, single net, writes out/snub_net.scad + preview +# default: 30 mm edges, 12 mm thick, single net, writes out/snub_net.scad + preview uv run generate.py # pick your own size/depth and also render an STL -uv run generate.py --edge 35 --depth 4 --web 0.6 --slack 6 --stl +uv run generate.py --edge 35 --depth 14 --web 0.4 --slack 6 --stl # split into smaller pieces (≤ 20 faces each) for easier printing/handling uv run generate.py --max-faces-per-piece 20 --stl @@ -102,8 +102,8 @@ slice and print. | Flag | Default | Meaning | |---|---|---| | `--edge` | `30` | edge length of every polygon (mm) — sets overall size | -| `--depth` / `--thickness` | `3` | plate depth / material thickness `T` (mm) | -| `--web` | `0.6` | living-hinge web left at the top of each groove (mm) | +| `--depth` / `--thickness` | `12` | plate depth / material thickness `T` (mm) — thick, rigid panels | +| `--web` | `0.4` | living-hinge web left at the top of each groove (mm), ~1–2 print layers | | `--slack` | `6` | extra fold opening added to every groove (degrees) | | `--over` | `0.4` | run grooves this far past each vertex for a clean fold (mm) | | `--max-faces-per-piece` | — | split the net into pieces of at most N faces | @@ -117,9 +117,12 @@ slice and print. 1. **Orientation:** print the plate **inner (grooved) side down** on the bed. Every bevel wall is within ~`γ` of vertical (< ~20°), so the grooves are self-supporting — **no support material needed**. -2. **Material:** PLA/PETG work. The `web` is a living hinge: with a single fold - it survives easily. For repeated folding or brittle filament, increase - `--web`, or reduce it toward ~0.4 mm for an easier fold. +2. **Material:** PLA/PETG work. The default `--web 0.4` (≈1–2 layers at a + 0.2 mm layer height) leaves a thin, easy-to-bend living hinge between the + thick rigid panels. Set your slicer's layer height so the web is a whole + number of layers (e.g. 0.4 mm web at 0.2 mm layers). For repeated folding or + brittle filament, increase `--web`; for an even easier single fold, drop it + toward one layer. 3. **Fold** each hinge until the groove walls meet (or until the faces look right). The grooves are valley folds toward the inner side. 4. **Glue** the 59 seams (and the hinge grooves, if you want a rigid result). diff --git a/snub-dodecahedron/generate.py b/snub-dodecahedron/generate.py index 0bdf239..75cfc24 100644 --- a/snub-dodecahedron/generate.py +++ b/snub-dodecahedron/generate.py @@ -32,9 +32,9 @@ def main(argv=None): ap.add_argument("--edge", type=float, default=30.0, help="edge length of every polygon, mm (default 30)") ap.add_argument("--depth", "--thickness", dest="depth", type=float, - default=3.0, help="plate depth / thickness, mm (default 3)") - ap.add_argument("--web", type=float, default=0.6, - help="living-hinge web thickness at the top, mm (default 0.6)") + default=12.0, help="plate depth / thickness, mm (default 12)") + ap.add_argument("--web", type=float, default=0.4, + help="living-hinge web thickness at the top, mm (default 0.4)") ap.add_argument("--slack", type=float, default=6.0, help="extra fold opening added to every groove, deg (default 6)") ap.add_argument("--over", type=float, default=0.4, diff --git a/snub-dodecahedron/images/groove_profile.png b/snub-dodecahedron/images/groove_profile.png index ce85926..ee5cf11 100644 Binary files a/snub-dodecahedron/images/groove_profile.png and b/snub-dodecahedron/images/groove_profile.png differ diff --git a/snub-dodecahedron/images/plate_3d.png b/snub-dodecahedron/images/plate_3d.png index 58d5a97..39623d5 100644 Binary files a/snub-dodecahedron/images/plate_3d.png and b/snub-dodecahedron/images/plate_3d.png differ diff --git a/snub-dodecahedron/scadgen.py b/snub-dodecahedron/scadgen.py index b9d2947..e4b05f0 100644 --- a/snub-dodecahedron/scadgen.py +++ b/snub-dodecahedron/scadgen.py @@ -42,8 +42,8 @@ import numpy as np @dataclass class FoldParams: edge_mm: float = 30.0 # length of every polygon edge - thickness_mm: float = 3.0 # plate depth (T) - web_mm: float = 0.6 # living-hinge thickness left at the top + thickness_mm: float = 12.0 # plate depth (T): thick, rigid panels + web_mm: float = 0.4 # living-hinge thickness left at the top (~2 layers) slack_deg: float = 6.0 # extra opening added to every fold (more room) over_mm: float = 0.4 # run grooves slightly past each vertex eps_mm: float = 0.05 # cut a hair below the bed for clean booleans