Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions docs/wiki/Assemble-tool.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Assemble tool and Auto-fit

## What it is

EdgeSlicer adds stronger **assembly** and **auto-fit** tools so multi-part models can be mated and merged for printing without juggling them by hand.

Two related entry points:

- **Auto-Fit Assembly** (object / selection menu) — right-click a multi-selection: the largest part stays fixed; the rest mate to it by matching faces, holes, and pegs; everything merges into one print-ready object.
- **Assemble tool → Auto-fit** — pick one feature on each part, press Auto-fit, nudge with live **Rotate / Offset** sliders, then **Merge parts**.

New assembly modes include **Triangle and triangle** and **Curve and curve**. **Point and point** snaps to vertices at any zoom and has one-click **Coincide points**.

## Where to find it

- Prepare view → **Assemble** tool (toolbar / assembly tools)
- Right-click a **multi-selection** → **Auto-Fit Assembly** (or equivalent assembly command)
- Screenshot: `docs/images/assembly.png` (assembly modes, curve-and-curve mate, Auto-fit, Rotate / Offset, Merge parts)

## How to use it

### Auto-Fit Assembly (selection)

1. Select multiple parts that should become one object.
2. Right-click → **Auto-Fit Assembly**.
3. Review the result: largest part fixed; others mated by faces / holes / pegs and merged.

### Assemble tool → Auto-fit

1. Open the **Assemble** tool.
2. Choose an assembly mode (including **Triangle and triangle**, **Curve and curve**, or **Point and point**).
3. Pick one feature on each part (flat face, circular rim, a single triangle, or a curved patch). For Point and point, use **Coincide points** when you want a one-click snap.
4. Press **Auto-fit**.
5. Nudge with the live **Rotate / Offset** sliders.
6. Press **Merge parts** when the mate looks right.

Rotation is chosen by outline fit **and** a whole-mesh collision check, so pegs seat square without intersecting.

### Related assembly helpers

- **Assemble Separately / Separate** — pull parts out of an assembly in place
- **Merge into Single Part** — merge while keeping paint and seam annotations

## Limits / notes

| Situation | What happens |
|---|---|
| Poor feature picks | Auto-fit may not find a clean mate — try another mode or feature. |
| Collision check | Favours mates that do not intersect; adjust Rotate / Offset if needed. |
| Upstream face-and-face snapping | Edge also carries fixes so face-and-face picking uses the facet under the cursor again. |

For cut-plane joints instead of assembly mates, see [Flexi joints and Cut tool](Flexi-joints).

## Related

- [Auto-Fit Assembly](Auto-Fit-Assembly) — same selection-based flow called out on the Home index
- [Flexi joints and Cut tool](Flexi-joints)
- [Home](Home)
30 changes: 30 additions & 0 deletions docs/wiki/Auto-Fit-Assembly.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Auto-Fit Assembly

## What it is

**Auto-Fit Assembly** mates a multi-selection into one print-ready object: the largest part stays fixed, the rest mate by matching faces, holes, and pegs, then everything merges.

For feature-pick Auto-fit inside the Assemble tool (Triangle/Curve/Point modes, Rotate / Offset, Merge parts), see [Assemble tool and Auto-fit](Assemble-tool).

## Where to find it

- Object list / Prepare view → select multiple parts → right-click → **Auto-Fit Assembly**

## How to use it

1. Select the parts that should become one object.
2. Right-click → **Auto-Fit Assembly**.
3. Check that the largest part stayed fixed and the others seated on faces / holes / pegs.
4. Slice or continue editing the merged object.

## Limits / notes

| Situation | What happens |
|---|---|
| Ambiguous geometry | Mating may need the Assemble tool’s feature-pick Auto-fit instead. |
| Paint / seams | Prefer **Merge into Single Part** when you need annotations preserved — see [Assemble tool](Assemble-tool). |

## Related

- [Assemble tool and Auto-fit](Assemble-tool)
- [Home](Home)
47 changes: 47 additions & 0 deletions docs/wiki/Bake-slice-to-mesh.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Bake slice to mesh

> Staging: available on `feat/ultra-preferences`. Not on `main` yet.

## What it is

**Bake slice to mesh...** rebuilds the object as the **outer wall the slicer will actually print**, so you can re-slice that mesh at another layer height (or export it).

It uses the current slice’s extrusion paths (including fuzzy skin), not a separate “smooth contour only” path in the live UI.

## Where to find it

- Prepare **object** context menu → **Bake slice to mesh...**
- Object list object row or canvas right-click on a full object / instance

**Not** on the part menu, multi-selection menus, or Assemble view.

**Enable gate:** exactly one object, and the plate must already be sliced through perimeters (`can_bake_slice_to_mesh` / `slice_bake_available`).

## How to use it

1. Slice the plate so perimeters exist for the object.
2. Right-click the object → **Bake slice to mesh...**
3. In the **Bake slice to mesh** dialog:
- **Result:** Replace object / Add as new object / Export STL...
- **Resolution** (mm)
- **Smooth vertical steps**
- **Close small gaps** / **Gap radius**
4. Confirm with **Bake**.

Tooltip: *Rebuild this object as the outer wall the slicer will actually print, so it can be re-sliced at another layer height.*

## Limits / notes

| Situation | What happens |
|---|---|
| Not sliced yet / no perimeters | Menu item stays disabled. |
| Multi-object or part selection | Bake is not offered. |
| Contour vs extrusion UI | Dialog can build contour options, but live UI uses **extrusion paths** (fuzzy skin included). |
| vs SVG/text gizmo **Bake** | Different feature — gizmo Bake only drops SVG/text editability into an uneditable part. |

## Related

- [Object menu](Object-menu)
- [Repair/Remesh](Repair-Remesh)
- [Quad remesh](Quad-remesh)
- [Home](Home)
42 changes: 42 additions & 0 deletions docs/wiki/Compare-Slices.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Compare Slices

## What it is

**Compare Slices** diffs two slices (or sliced files) so you can see what changed between them: **settings**, **time** and **filament** estimates, plus a **per-layer toolpath** comparison.

Use it when you tweak a preset or project and want a clear before/after without guessing from memory.

## Where to find it

- **View** menu → **Compare Slices**
- Screenshot in the repo: `docs/images/compare-slices.png` (time and filament deltas, changed settings, per-layer toolpath overlay)

## How to use it

1. Produce the first slice (or keep a sliced file you already have).
2. Change settings or the model as needed and slice again — or pick a second sliced file.
3. Open **View → Compare Slices**.
4. Choose the two slices / sliced files to compare.
5. Review:
- which **settings** differ
- **time** and **filament** deltas
- the **per-layer toolpath** overlay for path-level differences
6. Use that to decide whether the change is worth keeping, or to document a regression.

## Limits / notes

| Situation | What happens |
|---|---|
| You only have one slice | You need a second slice or sliced file to compare against. |
| Large projects | Per-layer overlays can be dense — focus on layers or regions that matter for the change. |
| Upstream Orca | This is an EdgeSlicer workflow feature; stock Orca does not ship the same Compare Slices window. |

Other notes:

- Comparing a slice to a saved sliced file is useful for “what did this release / preset change?” checks.
- Pair with [Preferences → Extras](Preferences-Extras) habits (for example Auto-Save) when you want an easy trail of project states to re-open and re-slice.

## Related

- [Preferences → Extras](Preferences-Extras) — Edge-only preferences (project, presets, archive, …)
- [Home](Home) — EdgeSlicer wiki index
40 changes: 40 additions & 0 deletions docs/wiki/Edge-Hub.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Edge Hub overview

## What it is

**Edge Hub** is the same EdgeSlicer binary run as a **tray-only background process**. It serves the phone page and camera relays. Any slicer window can start it, and it keeps running after you close those windows.

Through the hub you get LAN phone access (QR / token link), optional remote access over Tailscale, printer event notifications, hidden slicer windows for phone-driven slice/send, and the control surfaces that only answer on loopback.

## Where to find it

- System tray → Edge Hub (balloon / menu)
- Hub page (loopback only) — phone QR, notifications card, window / hidden-instance controls
- Preferences → Extras → **Phone access** (related options; see [Preferences → Extras](Preferences-Extras))

## How to use it

1. Start EdgeSlicer as usual — a slicer window starts the hub if it is not already running.
2. Open the hub from the tray when you need the phone QR, notification destinations, or window controls.
3. Enable **phone access on the LAN**, scan the **QR code**, and use the phone page (`http://<pc>:13640/r/<token>/`) for Streams, Prepare, Devices, and Reprints. Details: [Phone access](Phone-access).
4. Optionally set up **Tailscale remote access** for HTTPS away from home. Details: [Remote access (Tailscale)](Remote-access-Tailscale).
5. Configure **notifications** on the hub page’s Notifications card. Details: [Printer event notifications](Printer-notifications).
6. Let the hub open further slicer windows, including **hidden** ones (no desktop window) so the phone can slice and send without UI on the PC. A hidden instance that would have raised a dialog flags *needs attention* on the hub page and in the tray menu; you can toggle hidden ↔ visible either way.

## Limits / notes

| Situation | What happens |
|---|---|
| Hub page / tray control plane | Answers only on **loopback** — no tunnel reaches the control plane. |
| Phone link | Token-gated; survives restarts. **New link** rotates the token and invalidates saved links and home-screen icons. |
| Firewall (Windows installer) | Adds a rule for **TCP 13640** for the hub. |
| Closing slicer windows | Hub can keep running in the tray. |

## Related

- [Phone access and the companion app](Phone-access)
- [Remote access (Tailscale)](Remote-access-Tailscale)
- [Printer event notifications](Printer-notifications)
- [Store G-Code Files](Store-G-Code-Files) — archive used by phone Reprints
- [Stream tab](Stream-tab) — desktop camera wall; shares phone link / QR concepts
- [Home](Home)
50 changes: 50 additions & 0 deletions docs/wiki/Edit-cut.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Edit cut and Copy cut

> Staging: available on `feat/ultra-preferences`. Not on `main` yet.

## What it is

When an object still has a **stored cut recipe** from the Cut tool:

- **Edit cut...** — reopen that cut in the Cut gizmo so you can change it
- **Copy cut to...** — submenu of other objects; set the same cut up on another object, ready to cut it the same way

These sit near **Invalidate cut info** on the object menu.

## Where to find it

- Object menu → **Edit cut...** (only if `has_selected_editable_cut()`)
- Object menu → **Copy cut to...** → pick another object (only if the cut is copyable)

## How to use it

### Edit cut

1. Select an object produced (or still holding) an editable cut.
2. Right-click → **Edit cut...**
3. Adjust the cut in the Cut gizmo (plane, Flexi joints, thickness, etc.).
4. Apply when done.

Tooltip: *Edit the cut that produced this object.*

### Copy cut to another object

1. Select the object that has the cut recipe.
2. Right-click → **Copy cut to...** → choose the target object.
3. Cut the target with the same setup.

Tooltip: *Set this cut up on another object, ready to cut it the same way.*

## Limits / notes

| Situation | What happens |
|---|---|
| No stored editable cut | Edit cut is not shown. |
| Invalidate cut info | Clears cut metadata (already on `main`); after that, Edit/Copy may no longer apply. |
| Flexi joints / curved cut | See [Flexi joints](Flexi-joints). |

## Related

- [Flexi joints and Cut tool](Flexi-joints)
- [Object menu](Object-menu)
- [Home](Home)
44 changes: 44 additions & 0 deletions docs/wiki/Fill-bed-with-copies.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Fill bed with copies

## What it is

**Fill bed with copies** packs as many copies of the selection as will fit on the current plate, using a dialog for gaps, margins, rotation, and layout mode.

It fills around objects already on the plate. **Grid** lays an exact regular block; **Compact** packs more tightly (Edge’s compact pack no longer gives up early and leaves empty strips). Filling plate 2 or later puts copies on that plate.

## Where to find it

- Object menu → **Fill bed with copies**
- Object menu → **Clone** (`Ctrl+K`) → dialog button **Fill** (tooltip “Fill bed with copies”)

Entry also sits under Clone in the object menu family described in [Object menu](Object-menu).

## How to use it

1. Select the object (or instance) you want to duplicate across the bed.
2. Choose **Fill bed with copies**, or open **Clone** and click **Fill**.
3. In the dialog set:
- **Minimum gap between copies**
- **Allow rotation** (on/off)
- **Layout**: Compact or Grid
- **Minimum distance from bed edge**
- Optional **Keep the front edge clear** / **Distance from the front edge** (calibration-line margin)
- **Ignore support clearance** (staging on `feat/ultra-preferences` — not on `main` yet)
4. Confirm with **Fill**.
5. Check the live count / arrangement on the plate, then slice.

## Limits / notes

| Situation | What happens |
|---|---|
| Objects already on the plate | Fill packs around them. |
| Grid layout | Exact regular block; hardware validation of Grid is still listed as unchecked by the maintainer — verify the first print. |
| Ignore support clearance | Staging only — packing can ignore support clearance; warnings may mention support clearance instead of always blaming brim. |
| Compact layout | Improved vs early bail-out that left empty strips. |
| Plate 2+ | Copies go on the active / chosen later plate. |

## Related

- [Scale to build volume](Scale-to-build-volume)
- [Object menu](Object-menu)
- [Home](Home)
62 changes: 62 additions & 0 deletions docs/wiki/Flexi-joints.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# Flexi joints and Cut tool

## What it is

EdgeSlicer extends the **Cut tool** so you can join the halves of a cut part with a **print-in-place Flexi joint** instead of a plug: double ring, ball and socket, chain link, hinge (chosen knuckle count, halves can fold shut), screw-top **thread**, or quarter-turn **bayonet** lock.

The cut plane can also bend into a **curved cut**, and flat or curved cuts can remove a **cut thickness** (kerf) so reassembled halves leave room for glue or a joint.

Joints survive saving and reopening a project. The slicer warns when a gap-closing setting would fuse them.

## Where to find it

- Prepare view → **Cut tool** (toolbar / object manipulation)
- In the Cut tool UI: Flexi joint type and clearance, curved-cut controls, cut thickness / kerf options
- Assembly-related screenshots: `docs/images/assembly.png` in the repo (assemble modes; Flexi/cut behaviour is in the Cut tool itself)

## How to use it

### Add a Flexi joint on a cut

1. Select the part and open the **Cut tool**.
2. Place the cut (flat or curved — see below).
3. Choose a **Flexi joint** instead of a plug: double ring, ball and socket, chain link, hinge, thread, or bayonet.
4. Set **clearance** and orient the joint to suit the part.
5. For a **hinge**, set the number of knuckles; the halves can fold shut after printing.
6. Apply the cut. Keep both halves; connectors (including Flexi joints) sit on the cut surface.
7. Save the project if you need the joint to persist across sessions.

### Curved cut

1. In the Cut tool, bend the cut plane into a **curved sheet**.
2. Drag control points; right-click-drag to snap them to the model.
3. Set density as needed.
4. Set each half to **Visible**, **Ghost**, or **Hidden** so you can read the result from both sides.
5. Both halves are always kept. Connectors and Flexi joints sit on the curved surface.

### Cut thickness (kerf)

1. For a flat or curved cut, set a non-zero **cut thickness** to remove a slab of material.
2. Centre it on, above, or below the cut as needed (glue gap or joint clearance).
3. Connectors grow to span the gap.
4. Leave thickness at **zero** (default) for a normal zero-kerf cut.

## Limits / notes

| Situation | What happens |
|---|---|
| Gap-closing settings that would fuse the joint | Slicer **warns** — check clearance / related settings before printing. |
| Project reopen | Flexi joints are preserved with the project. |
| Hardware validation | Curved cut and Flexi joints (including thread and bayonet) are listed as **not yet printed on hardware by the maintainer** — check the first print carefully. |
| Zero cut thickness | Behaviour matches a normal cut (no kerf). |

Other notes:

- Prefer Flexi joints when you want print-in-place articulation or a lock without a separate plug.
- Use cut thickness when glue or joint clearance needs a gap between halves.

## Related

- [Assemble tool and Auto-fit](Assemble-tool) — mate features and merge parts
- [Auto-Fit Assembly](Auto-Fit-Assembly) — multi-selection face/hole/peg mating
- [Home](Home) — EdgeSlicer wiki index
Loading