Files
FreeCADWasmDev/docs/current/cam-selected-command-boundaries.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

2.3 KiB

CAM batch 59b8fbac81eb1e597e25c4bd

Eleven selected desktop commands are not implemented by the current native desktop dispatcher. Their registrations led to the generic CAM fallback, which created an empty Path::FeaturePython in a temporary document, closed that document, and reported success. Those registrations have been removed. These requests now remain unimplemented instead of reporting a completed machining workflow.

The mounted desktop dispatcher already calls the CAM adapter. The adapter now applies its active-task and malformed-selection guards to Engrave, Helix, MillFacing, Pocket3D, Pocket_Shape, Probe, and Profile, and rejects selections from another document for this batch.

Remaining implementation boundaries:

  • Engrave, Helix, MillFacing, Pocket3D, Pocket_Shape, Probe, and Profile need their desktop operation proxies, persistent Job and ToolController ownership, base geometry selection, parameters, recompute, and real generated toolpaths.
  • OperationCopy needs existing operation selection and native transactions that preserve Job ownership and operation properties.
  • Post and PostSelected need desktop postprocessor execution, Job ordering and selected-operation semantics, and delivery of the resulting output file.
  • SelectLoop needs native topology traversal and application selection updates.

OpActiveToggle now has a dedicated native branch calling CAMDesktopCommands.h, compiled as part of the existing CAM runtime translation unit. It resolves the existing document and selected Path operations, validates their Active properties, deduplicates selection, toggles each native property inside a transaction, and recomputes before committing. Failure aborts the transaction; the document remains open. The existing React shell, desktop dispatcher, family facade and CAM worker carry documentId and selection to this branch and propagate its native result. This implementation has not been built or accepted by the outer pipeline.

New command handlers belong in CAMDesktopCommands.cpp/.h linked into the existing CAM module target, per the packet's oversized-runtime constraint. Do not restore registrations until real handlers exist. No business acceptance is claimed. Build, artifact sync, and runtime/business acceptance remain with the outer pipeline.