Files
FreeCADWasmDev/docs/current/part-split-source-placeholder-removal-20260912.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

3.6 KiB

Part Split Source Reuse

Scope: replace two incomplete native BREP operations with supplied desktop implementations. No automated runtime tests, browser validation or acceptance. This does not claim that all project placeholders are resolved.

Removed Limitations

  • Part_XOR previously rejected surfaces and wires, then approximated solid fragment membership using repeated common-volume calculations. It now invokes BOPTools.SplitAPI.xor from the supplied embedded source, including aggregate handling, general-fuse source correspondence and odd-membership selection.
  • Part_BooleanFragments previously rejected every mode except Standard. It now invokes BOPTools.SplitAPI.booleanFragments for Standard, Split and CompSolid. Source errors, invalid inputs and the no-solids CompSolid error remain errors.

No new geometry engine or handwritten replacement algorithm was introduced. The original BOPTools code calls native Part/OCCT. Existing input BREP and output BREP/validity/volume/edge-count contracts are retained; no fixture input is added.

Required Runtime Connection

The former part.worker.ts route sent all desktop commands to the small PartDesktopCommandProbe, which does not contain the embedded FreeCAD/BOPTools runtime. part-source-commands.json now identifies these two commands; their requests use the already existing PartBox runtime. Other desktop commands keep their prior target. PartBox initializes its native Python types and existing Part package path before invoking the source algorithm.

The implementation packet uses the same command table to select the actual PartBox build, retains the helper/header and embedded BOPTools source inputs, and reuses existing dependencies. The active scheduler manifest is not replaced.

Remaining Scope

This batch repairs the native shape operations, not the entire parametric FeatureXOR/BooleanFragments document editing workflow. Desktop feature Links, property editing and complete UI ownership still need their own source-backed integration. A compiled BREP command is not proof that those behaviors exist. Source decisions and fingerprints are retained in native-semantic-decisions.json so the repaired algorithms are not implemented again in subsequent turns.

Work Accounting

The initial native pipeline took 79.696 seconds, including 67.991 seconds of build and 3.136 seconds of artifact sync. A follow-on source correction added the existing Part Python path initializer before first use; this required another incremental build. The final native timings are recorded in part-split-source-implementation-pipeline.json, not combined with the initial attempt or presented as all engineering time.

Frontend publication must use FREECAD_WEB_FAST_LINK=ON. Do not repeat the full public-asset copy from the previous turn. No full OCCT rebuild is needed.

Final publication completed:

Step Seconds
Module registry 0.100
Capability registry 7.503
Preflight 0.045
Final native build, including 7.918 seconds waiting for build lock 73.784
Native artifact sync 3.081
Completion metadata, not runtime acceptance 0.913
Final native pipeline total 85.426
Frontend build total 8.820
Public asset sync within frontend build 6.766

Both final commands exited 0. The frontend used the existing incremental mode. The source inventory reused 478 unchanged files and rescanned eight changed files in 0.173 seconds; it reports 615 candidate locations, not 615 proven placeholders. The two command routes already existed before this batch, so route counts are not an appropriate measure of these native implementation improvements.