Files
FreeCADWasmDev/docs/current/PART_CROSS_SECTIONS_PROGRESS.md

2.6 KiB

Native Cross-Sections

2026-09-17 05:45 Asia/Shanghai. Part:desktop:Part_CrossSections passed first formal acceptance: 30 scenarios in 23.227 seconds. Evidence: business-evidence/37fc8060a5e98296b20fed4c-20260916T214555151607.json.

The authoritative desktop task is freecad-source/src/Mod/Part/Gui/CrossSections.cpp. The previously attempted TaskCrossSections.cpp filename does not exist. The bounded reader now reports missing files separately from scope rejections; eight focused reader checks passed.

The existing DocumentProbe creates native Part::Feature section compounds using TopoShape::makeElementSlice, the same algorithm called by desktop Shape.slice. XY/XZ/YZ, default bounding-box center, explicit position, multiple planes, spacing and both-side distribution follow the desktop task. Non-shape objects are filtered, repeated objects are deduplicated and transformed links resolve through native ShapeOptions. Empty intersections produce empty section compounds. Each Apply is a document transaction. Section shapes are static copies, as on desktop; later source edits affect subsequent Apply operations, not old sections.

The mounted task includes source selection, plane controls and live plane outlines, source visibility, Apply/Close, undo/redo and FCStd/OPFS storage. Large plane previews sample at most 200 requested positions; native generation retains the desktop count range of 1..2000000. Tests cover small representative counts and invalid range boundaries, not performance at the maximum count.

Cases verify analytic section lengths and plane coordinates, native circle circumference, two objects, ignored non-shapes, moved links, input rejection, document isolation, cancellation, static-copy behavior, history and restoration. The first FCStd assertion exposed expected floating-point serialization differences; the comparison now uses absolute tolerance 1e-9 for numbers while retaining exact structure, names, labels and array lengths. Desktop/mobile screenshots, nonblank canvas pixels, rotation and preview position changes are recorded. The browser reload occurs once to prove restoration; native scenarios reuse one kernel.

DocumentProbe incremental build, TypeScript and the production frontend build passed. A missing null guard in the in-progress import-panel mount was also fixed to unblock compilation; no Import acceptance is claimed by that change. Background writes were frozen while completing the shared-file edits and first acceptance, then thawed without terminating its task. Old-item revalidation stays paused. At this snapshot coverage is 190/1508, with 1318 lacking executable cases; coverage is not the count of currently accepted proofs.