72 lines
3.9 KiB
Markdown
72 lines
3.9 KiB
Markdown
# Part Face Box Selection
|
|
|
|
2026-09-16. `Part:desktop:Part_BoxSelection` now passes executable native and
|
|
browser business acceptance. The scope remains 1508 total requirements.
|
|
|
|
## Reused Implementation
|
|
|
|
This continuation reuses the prior Part adapter, the existing native
|
|
`Std_BoxElementSelection` handler, the mounted `WebViewTask`, native Part
|
|
geometry and its Three.js display. It completes the earlier partial tests;
|
|
there is no new selection engine or frontend substitute for native geometry.
|
|
The desktop source at `src/Mod/Part/Gui/BoxSelection.cpp` supplies face-selection
|
|
and hidden-object behavior. Web crossing/containment and add/remove modes use
|
|
the already implemented document-view projection path.
|
|
|
|
## Fixed Defects
|
|
|
|
- Hidden objects were omitted from rendering but still considered for native
|
|
rectangle hits. Picking now skips them as well.
|
|
- `getSubObject` did not reliably reject an out-of-range shape reference such
|
|
as Edge999. The native view handler validates Face/Edge/Vertex indices against
|
|
actual topology counts before accepting a selection.
|
|
- The mounted task lacked a show-all recovery action. It now restores hidden
|
|
objects, and hiding selected faces targets their owning objects correctly.
|
|
- Loading a document no longer supplies an empty frontend selection over the
|
|
persisted native selection. View selection and visibility restore from FCStd.
|
|
- Escape cancels an in-progress drag without a native request. Mode controls
|
|
remain disabled while the native operation is active. Selection output wraps
|
|
on narrow screens and controls have explicit accessible labels.
|
|
- The earlier fixture positioned BoxB without creating it. Both independent
|
|
documents now contain actual native boxes before selection is tested.
|
|
|
|
## Evidence And Efficiency
|
|
|
|
`business-evidence/adef41dba5a768e0d8863f94-20260916T065640854628.json` contains
|
|
22 passing scenarios and 28 assertions. The runner closed the attributable
|
|
issue `runtime:a7dd841dda85b24919a2`; status was not edited manually.
|
|
|
|
Native cases cover real face identity, translated objects, crossing versus
|
|
containment, reverse drags, add/remove while preserving existing edge/whole
|
|
object selections, hidden/show recovery, perspective projection, behind-camera
|
|
rejection, invalid inputs, independent documents and FCStd view-state restore.
|
|
Eleven existing adapter protocol checks are retained alongside the native
|
|
dimension-variant cases.
|
|
|
|
Twelve browser scenarios use actual pointer drags and the mounted controls.
|
|
They verify native request/response and callback state, selection modes,
|
|
visibility, cancellation, resizing, nonblank geometry, OPFS saving, page reload,
|
|
FCStd restoration and another real drag. Screenshots at 1440x900 and 390x844 are
|
|
hashed in the evidence and were visually inspected. Native geometry remains
|
|
visible without panel overflow. `part-box-selection-owners.json` separately
|
|
confirms the shared repair in DocumentProbe and PartBox.
|
|
|
|
The existing adapter and native selection cases now share one adapter compile
|
|
and one Node WASM instance. Browser persistence still intentionally reloads
|
|
the page to prove restoration. Full selected acceptance took 30.683 seconds;
|
|
an unchanged `--reuse` request took 0.147 seconds, read one report and executed
|
|
zero cases. No IFC tests were run.
|
|
|
|
Only the two existing Part runtimes using the changed handler were incrementally
|
|
built. TypeScript, geometry ownership checks, production Vite build and 47
|
|
business automation tests passed. Older failed evidence and browser diagnostics
|
|
remain retained. A browser observation error was corrected by attaching to the
|
|
actual versioned router module loaded by Vite, not a second module instance.
|
|
|
|
## Continue
|
|
|
|
Builder, Chamfer and BoxSelection now each have their own passing evidence.
|
|
Continue remaining uncovered workflows without repeating those unchanged
|
|
requirements. Runtime revalidation is not new business delivery. Current counts
|
|
come from the generated reconciliation; missing coverage is still substantial.
|