mirror of
https://github.com/imjasonh/terraform-playground
synced 2026-07-08 07:44:57 +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:
parent
79ec64d4c9
commit
a8d9599e98
5 changed files with 15 additions and 12 deletions
|
|
@ -81,11 +81,11 @@ sudo apt-get install openscad # or https://openscad.org
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
```bash
|
```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
|
uv run generate.py
|
||||||
|
|
||||||
# pick your own size/depth and also render an STL
|
# 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
|
# split into smaller pieces (≤ 20 faces each) for easier printing/handling
|
||||||
uv run generate.py --max-faces-per-piece 20 --stl
|
uv run generate.py --max-faces-per-piece 20 --stl
|
||||||
|
|
@ -102,8 +102,8 @@ slice and print.
|
||||||
| Flag | Default | Meaning |
|
| Flag | Default | Meaning |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| `--edge` | `30` | edge length of every polygon (mm) — sets overall size |
|
| `--edge` | `30` | edge length of every polygon (mm) — sets overall size |
|
||||||
| `--depth` / `--thickness` | `3` | plate depth / material thickness `T` (mm) |
|
| `--depth` / `--thickness` | `12` | plate depth / material thickness `T` (mm) — thick, rigid panels |
|
||||||
| `--web` | `0.6` | living-hinge web left at the top of each groove (mm) |
|
| `--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) |
|
| `--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) |
|
| `--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 |
|
| `--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.
|
1. **Orientation:** print the plate **inner (grooved) side down** on the bed.
|
||||||
Every bevel wall is within ~`γ` of vertical (< ~20°), so the grooves are
|
Every bevel wall is within ~`γ` of vertical (< ~20°), so the grooves are
|
||||||
self-supporting — **no support material needed**.
|
self-supporting — **no support material needed**.
|
||||||
2. **Material:** PLA/PETG work. The `web` is a living hinge: with a single fold
|
2. **Material:** PLA/PETG work. The default `--web 0.4` (≈1–2 layers at a
|
||||||
it survives easily. For repeated folding or brittle filament, increase
|
0.2 mm layer height) leaves a thin, easy-to-bend living hinge between the
|
||||||
`--web`, or reduce it toward ~0.4 mm for an easier fold.
|
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
|
3. **Fold** each hinge until the groove walls meet (or until the faces look
|
||||||
right). The grooves are valley folds toward the inner side.
|
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).
|
4. **Glue** the 59 seams (and the hinge grooves, if you want a rigid result).
|
||||||
|
|
|
||||||
|
|
@ -32,9 +32,9 @@ def main(argv=None):
|
||||||
ap.add_argument("--edge", type=float, default=30.0,
|
ap.add_argument("--edge", type=float, default=30.0,
|
||||||
help="edge length of every polygon, mm (default 30)")
|
help="edge length of every polygon, mm (default 30)")
|
||||||
ap.add_argument("--depth", "--thickness", dest="depth", type=float,
|
ap.add_argument("--depth", "--thickness", dest="depth", type=float,
|
||||||
default=3.0, help="plate depth / thickness, mm (default 3)")
|
default=12.0, help="plate depth / thickness, mm (default 12)")
|
||||||
ap.add_argument("--web", type=float, default=0.6,
|
ap.add_argument("--web", type=float, default=0.4,
|
||||||
help="living-hinge web thickness at the top, mm (default 0.6)")
|
help="living-hinge web thickness at the top, mm (default 0.4)")
|
||||||
ap.add_argument("--slack", type=float, default=6.0,
|
ap.add_argument("--slack", type=float, default=6.0,
|
||||||
help="extra fold opening added to every groove, deg (default 6)")
|
help="extra fold opening added to every groove, deg (default 6)")
|
||||||
ap.add_argument("--over", type=float, default=0.4,
|
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 |
Binary file not shown.
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 23 KiB |
|
|
@ -42,8 +42,8 @@ import numpy as np
|
||||||
@dataclass
|
@dataclass
|
||||||
class FoldParams:
|
class FoldParams:
|
||||||
edge_mm: float = 30.0 # length of every polygon edge
|
edge_mm: float = 30.0 # length of every polygon edge
|
||||||
thickness_mm: float = 3.0 # plate depth (T)
|
thickness_mm: float = 12.0 # plate depth (T): thick, rigid panels
|
||||||
web_mm: float = 0.6 # living-hinge thickness left at the top
|
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)
|
slack_deg: float = 6.0 # extra opening added to every fold (more room)
|
||||||
over_mm: float = 0.4 # run grooves slightly past each vertex
|
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
|
eps_mm: float = 0.05 # cut a hair below the bed for clean booleans
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue