1
0
Fork 0
mirror of https://github.com/imjasonh/terraform-playground synced 2026-07-07 23:35:16 +00:00

Thicker panels (default 12mm) and deeper notch (0.4mm web) for rigid panels with easy-bend hinges

Co-authored-by: Jason Hall <imjasonh@users.noreply.github.com>
This commit is contained in:
Cursor Agent 2026-06-15 00:58:05 +00:00
parent 79ec64d4c9
commit a8d9599e98
No known key found for this signature in database
5 changed files with 15 additions and 12 deletions

View file

@ -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), ~12 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` (≈12 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).

View file

@ -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,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Before After
Before After

View file

@ -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