Files
FreeCADWasmDev/docs/current/assembly-joint-selection-batch.md
wangdequan 9a7c4f0335 Save FreeCAD Web workspace sources and user validation evidence
IFC native binding remains incomplete; preserve accurate test results.
2026-09-15 22:01:58 +08:00

52 lines
3.0 KiB
Markdown

# Assembly joint selection batch
Batch: `8d028b2604665ddf9b329d91`
Scope: Assembly_CreateJointAngle, Assembly_CreateJointBall,
Assembly_CreateJointBelt, Assembly_CreateJointCylindrical.
The existing AssemblyRuntimeProbe.cpp handler maps these commands to desktop
JointObject indices 8, 4, 12, and 2. It resolves component references, creates
native JointObject features, sets supported properties, solves, recomputes,
and commits or aborts the document transaction. This implementation is reused.
The workbench shell already passes document selection to the dispatcher.
Assembly selection preparation now lives in assembly-desktop-adapter.ts,
wired into that dispatcher. Empty selection subelement arrays now produce a
whole-component reference instead of dropping the selected component.
Explicit references retain precedence. The four selected commands validate
reference shape, document ownership, assembly name, and commit-only action
before dispatch. Component resolution and distinct-part checks remain native.
The family record type now declares the existing args transport.
Follow-up: the four selected commands now normalize omitted or empty
subelements in explicit references as well as tree selections. The native
handler applies the same normalization for direct family requests, validates
object names, and still resolves both references through getComponentReference
before creating the real joint. Null, non-list, multiple-path and non-string
subelement values remain invalid. Other joint types retain their reference
contract. No geometry or solver implementation is replaced.
The selected native joint results now include all applicable properties present
on the created joint, including defaults, and the two components' placements
read from the document after solve/recompute. Position and quaternion values
are serialized from FreeCAD objects; the Web layer does not calculate them.
The wired Assembly response adapter requires native object identity, properties,
references and finite component placements before reporting a complete result.
These fields travel through the existing family Worker/Facade response to the
mounted workbench result view. Build/sync must deploy the updated native module
with the adapter; older module results without placements are rejected.
This follow-up ran no build, gate, verification, hash or Git checks, as requested.
Verification boundary: the project TypeScript check could not start because
web/node_modules/.bin/tsc is absent. No build, sync, or business acceptance was
run; these belong to the outer pipeline. Runtime verification must cover empty
and omitted subelements, two subelements selected through an assembly root,
explicit references, cross-document rejection, and real native joint results
for all four types. This note is not business acceptance.
Remaining workflow boundary: the native route accepts completed joint inputs;
interactive connector preview and task cancellation remain unavailable and
are rejected. An existing Assembly runtime document and assembly name are
required. Full desktop task-dialog parity is not claimed.