mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-27 02:41:17 +00:00
Design: slot Radius caption, keyboard offer, plane combo removal, mass props, docs
Mirror of snaporca ac85277bac..0e7cb3ec78 (six changes, applied as a patch to DesignPanel.cpp rather than copied, so this fork's 30 permitted divergent lines survive — parity re-checked afterwards: the five shared files are byte-identical, DesignCanvas.cpp and DesignPanel.cpp differ by exactly 16 and 30 lines). - The straight slot's inline field says Radius, which is what it sets. It stores the half-width and passed the typed number through unchanged, so 30 produced a 60 mm slot. - The offer opens from the keyboard (Menu, Shift+F10), anchored on the viewport rather than wherever the pointer happens to be. The card hint names the new route. - The sketch card's Plane combo is gone; the plane comes from the viewport. Also stops build_candidate collapsing a face plane to a base plane while editing. - Mass properties and the dead Edit row are wired into the offer; DesignOffer.hpp is regenerated from tool_atlas.json, verified by re-running the generator and diffing. - docs/rig_build_traps.md + scripts/rig-build.sh, which derives its fork identity from project() so it cannot be pointed at the other fork's image or volume. - docs/design_tab.md refreshed (44 commits stale) + a PR description, with this fork's own merge-base and diff shape rather than snaporca's. Built green in the deps container with the new script and verified on the rig: Menu and Shift+F10 both open the offer at the viewport centre with the pointer parked off-canvas, and the sketch card shows no Plane row. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LyRwbuq6fjn3VV9U9UvhBM
This commit is contained in:
co-authored by
Claude Opus 5
parent
6e9910303b
commit
fd1bc092d8
+138
-14
@@ -1,8 +1,9 @@
|
||||
# The Design tab
|
||||
|
||||
A parametric CAD modeller inside the slicer. Draw a sketch, turn it into a solid, refine it,
|
||||
and send it straight to Prepare — without leaving for another application and coming back
|
||||
through an STL.
|
||||
Object-driven parametric CAD inside the slicer. Point at geometry; the geometry offers the
|
||||
verbs that apply to it. Selection comes first and the tool consumes it. Draw a sketch,
|
||||
constrain it, turn it into a solid, refine it, and send it straight to Prepare — without
|
||||
leaving for another application and coming back through an STL.
|
||||
|
||||
The model is a **recipe**, not a mesh. Every action becomes a feature in a tree that is
|
||||
replayed from the start whenever anything changes, so editing a dimension you set twenty
|
||||
@@ -14,19 +15,142 @@ already ships for STEP import.
|
||||
## Getting started
|
||||
|
||||
1. Open the **Design** tab.
|
||||
2. Pick a plane — XY, XZ or YZ — and press **Sketch**.
|
||||
3. Draw a closed profile, then press **✓** to finish the sketch.
|
||||
4. Select the sketch and press **Extrude** (`Shift+E`).
|
||||
2. Click a face or a reference plane in the viewport, then press `Shift+S` (Sketch). The offer
|
||||
opens with the sketch tools on it.
|
||||
3. Draw a closed profile, then press **✓ Confirm** in the floating action bar.
|
||||
4. With the sketch selected, press `Shift+E` (Extrude).
|
||||
5. Press **Commit to Plate** to hand the solid to Prepare.
|
||||
|
||||
The status line under the toolbar is the thing to watch: it says what the current tool is
|
||||
waiting for, and it is where a refusal explains itself.
|
||||
waiting for. When no plane is picked it reads *"Click a face or a reference plane in the
|
||||
viewport, then a sketch tool"*; once one is picked it reads *"Sketching on <face> — pick a
|
||||
tool"*. It is also where a refusal explains itself.
|
||||
|
||||
---
|
||||
|
||||
## Selecting
|
||||
|
||||
- One left-click selects what is under the cursor. There is no click-cycling through
|
||||
face → edge → body.
|
||||
- A click near a corner takes the corner, not the face behind it.
|
||||
- Left-drag sweeps a rubber band, and a rubber band takes the whole body.
|
||||
- An open sketch line can be clicked, even where it bounds a region.
|
||||
- Double-click a sketch stroke to edit it — the gesture belongs on the geometry.
|
||||
- Editing a dimension's value **updates** that dimension instead of adding a second one next
|
||||
to it.
|
||||
- The floating chrome that belongs to a sketch leaves with the sketch when it ends.
|
||||
- Sketching happens on the face you clicked, first click.
|
||||
- A sketch whose entities form no wire **fails** instead of extruding a default box. A
|
||||
subtraction that removes nothing is reported as an error instead of a silent success.
|
||||
|
||||
---
|
||||
|
||||
## The offer
|
||||
|
||||
Right-click on the geometry, released without moving the mouse (an 8 px budget — a
|
||||
right-drag that orbits the camera does not open it). Left-click still only selects, so
|
||||
pointing at things stays quiet.
|
||||
|
||||
The offer also opens by itself the moment you press Sketch on a face or plane, showing the
|
||||
sketch tools — the app hands you the tools directly.
|
||||
|
||||
**Eight families, always in this fixed order:** Create, Add material, Remove, Dress-up,
|
||||
Repeat, Transform, Reference, Modify.
|
||||
|
||||
- A family with at least one applicable verb shows it. Several applicable verbs collapse
|
||||
into a submenu under the family name.
|
||||
- A family with nothing applicable is **shown greyed in place, with the reason** — e.g.
|
||||
*"Create — Click a face or a reference plane in the viewport, then a sketch tool"*. It is
|
||||
not hidden. A control that cannot be used still says what it is and what you would have to
|
||||
do first.
|
||||
- Inside a sketch the offer shows the sketch verbs; outside it shows the feature verbs.
|
||||
|
||||
**Document-level actions never enter the offer**, because they act on the document and not
|
||||
on a selection: Import STEP, Import mesh, Text, SVG, Export STEP, Commit to Plate, Undo,
|
||||
Redo, Variables, Section view, Origin planes, World axes. They live in the toolbar.
|
||||
|
||||
---
|
||||
|
||||
## Keyboard
|
||||
|
||||
Single letters drive sketch tools **while a sketch is open**; Shift+letter drives feature
|
||||
tools and single letters drive view toggles **when no sketch is open**. The two maps are
|
||||
selected by the mode, not by whether a sketch session is running.
|
||||
|
||||
### Sketch (while a sketch is open)
|
||||
|
||||
| Key | Tool |
|
||||
|---|---|
|
||||
| `L` | Line — click start, then end |
|
||||
| `R` | Rectangle — click two opposite corners |
|
||||
| `C` | Circle — click centre, then radius |
|
||||
| `A` | Arc — click start, end, then a point |
|
||||
| `S` | Slot — two centreline ends, then width |
|
||||
| `E` | Ellipse — centre, major end, minor point |
|
||||
| `B` | Spline — click control points |
|
||||
| `P` | Point — click to place |
|
||||
| `G` | Polygon — click centre, then a vertex |
|
||||
| `D` | Dimension — click 2 points or an entity |
|
||||
| `T` | Trim — click a segment to trim it |
|
||||
| `X` | Extend — click a line/arc to extend it |
|
||||
| `O` | Offset — pick an entity, drag the distance |
|
||||
| `M` | Mirror — pick axis, then entities |
|
||||
| `F` | Fillet — pick two lines, set the radius |
|
||||
| `H` | Chamfer — pick two lines, set the distance |
|
||||
| `K` | Constrain — finish the live sketch and enter constrain |
|
||||
| `Q` | Construction toggle — draw the next entity as construction geometry |
|
||||
| `Del` | Delete the selected sketch entity |
|
||||
| `Esc` | Cancel the live tool |
|
||||
|
||||
### Feature (when no sketch is open)
|
||||
|
||||
| Key | Tool |
|
||||
|---|---|
|
||||
| `Shift+S` | Sketch |
|
||||
| `Shift+E` | Extrude — extrude a profile, or push/pull a picked face |
|
||||
| `Shift+R` | Revolve |
|
||||
| `Shift+W` | Sweep |
|
||||
| `Shift+L` | Loft |
|
||||
| `Shift+N` | Pattern |
|
||||
| `Shift+G` | Surface Extrude |
|
||||
| `Shift+J` | Surface Revolve |
|
||||
| `Shift+O` | Surface Loft |
|
||||
| `Shift+Q` | Surface Fill |
|
||||
| `Shift+U` | Surface Offset |
|
||||
| `Shift+V` | Thicken Surface |
|
||||
| `Shift+P` | Plane |
|
||||
| `Shift+A` | Axis |
|
||||
| `Shift+C` | Coord Sys |
|
||||
| `Shift+Y` | Transform |
|
||||
| `Shift+Z` | Mirror |
|
||||
| `Shift+B` | Boolean |
|
||||
| `Shift+X` | Cut |
|
||||
| `Shift+F` | Fillet / Chamfer |
|
||||
| `Shift+D` | Draft |
|
||||
| `Shift+K` | Shell |
|
||||
| `Shift+H` | Hole |
|
||||
| `Shift+T` | Thread |
|
||||
| `Shift+I` | Import STEP |
|
||||
| `Shift+M` | Import mesh |
|
||||
|
||||
### View toggles (single letters, when no sketch is open)
|
||||
|
||||
| Key | Action |
|
||||
|---|---|
|
||||
| `P` | Origin planes on/off |
|
||||
| `A` | World axes on/off |
|
||||
| `X` | Section view on/off |
|
||||
|
||||
While the section is on: `PageUp` / `PageDown` move the cut plane, `F` flips which half is
|
||||
kept. With no section on, `F` is Place on Face — lay the picked face flat on the bed.
|
||||
|
||||
---
|
||||
|
||||
## Sketching
|
||||
|
||||
A sketch is a closed (or open) 2D profile on a plane or on a flat face of an existing body.
|
||||
Press `Shift+S`, click the face or plane you want to sketch on, and draw. The toolbar and
|
||||
the offer both carry the sketch tools.
|
||||
|
||||
**Entities:** line, polyline, rectangle (corner / centre / oblique / rounded), circle
|
||||
(centre-radius / 2-point / 3-point), arc (centre-point / 3-point / tangent), ellipse and
|
||||
@@ -168,10 +292,10 @@ mesh.
|
||||
|
||||
## View controls
|
||||
|
||||
**Section view** hides half the model so you can see inside — `PageUp`/`PageDown` move the
|
||||
plane, Flip shows the other half, `Delete` removes it. **Place on Face** (`F`) lays a picked
|
||||
face flat on the bed. The bed and its grid can be toggled off when they get in the way, and
|
||||
origin planes and world axes can be shown while you orient yourself.
|
||||
**Section view** (`X`) hides half the model so you can see inside — `PageUp`/`PageDown` move
|
||||
the plane, `F` flips which half is kept. **Place on Face** (`F`, when section is off) lays a
|
||||
picked face flat on the bed. Origin planes (`P`) and world axes (`A`) can be toggled on while
|
||||
you orient yourself.
|
||||
|
||||
---
|
||||
|
||||
@@ -182,12 +306,12 @@ Being straight about the edges, so nobody discovers them the hard way:
|
||||
- **Rib** needs a sketch containing an explicit open line. A parametric rectangle sketch
|
||||
carries no individual entities, so Rib cannot use one.
|
||||
- **Surface Loft** and **Surface Fill** have kernel tests but have not been exercised by hand.
|
||||
- Two kernel tests are known-broken and excluded from the suite: a tangent-constraint case
|
||||
that aborts inside the vendored solver, and an internal-thread groove volume below its
|
||||
asserted threshold. Both are tracked, neither is fixed.
|
||||
- Card wiring for 9 of the 16 late-wired tools has never been click-tested.
|
||||
- Mate resolves by composing transforms directly. There is no 3D assembly solver, so mates
|
||||
are applied in order rather than solved simultaneously, and mate limits are not implemented.
|
||||
- Move-face and replace-face are not implemented — OCCT offers no clean primitive for them.
|
||||
- There is no automated GUI test in CI. Every behaviour above is traced to code and to a
|
||||
hand pass, not to a synthetic click.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user