Files
FreeCADWasmDev/docs/current/points-openscad-delivery.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

48 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Points / OpenSCAD 实际业务推进
2026-09-09。承接现有源码、WASM 和 v3 调度,不缩减 1503 项范围。本次专注补齐业务入口,没有再次建设调度框架。
## 已完成
| 模块 | 实际修复 | 当前证据 |
|---|---|---|
| Points | 复用后台已写的命名文档创建/更新;解除 Facade 固定三点约束;校验返回文档、对象、数量和包围盒;原生合并/结构化输出实际存储坐标;错误记录保留完整协议字段 | 4 项,26 个用例,1.226 秒 |
| OpenSCAD | 使用现成文件创建接口;Web 导入直接复用本机 C++ DXF reader、Part/OCCT 连接边与成面;保留图层选择、独立文档、追加与回滚 | 2 项,共用 9 个不同场景,3.907 秒 |
Points 证据:`business-evidence/e9d46ad45141aef5d712eb4c-20260909T013638203040.json`。
OpenSCAD 证据:`business-evidence/25e676b2e51f4efb3d0662ab-20260909T014050651509.json`。
## 原因与复用
- Points 的原生入口已经接受不同点集,Facade 仍对整个输入与固定 fixture 做字符串相等比较,导致现成能力无法使用。修复是接口和实际状态检查,不是重写点云算法。输入支持多个文档/对象,原生验证在修改前执行;非法输入后仍可更新原对象,不累积重复对象。
- OpenSCAD 用例调用未导出的 `FS.writeFile`;现成 WASM 实际提供 `FS_createDataFile`/`FS_unlink`,直接使用它们即可。没有为测试文件操作重新编译整个运行时。
- 旧 Web 导入委托 Python DXF 链,既缺标准库依赖,也绕开用户已提供的 C++ reader。现在适配直接调用 `Import::ImpExpDxfRead` 和现有 `Part::FaceMakerBullseye`,几何仍由 OCCT 实现。
- C++ reader 的“关闭图层”也清除 OriginalLayer,不能同时满足筛选图层。新增 `dxfCreateDraftLayers` 选项区分保留图层数据和创建 Draft 界面对象;默认 true 保留原桌面行为,OpenSCAD 的独立配置设 false。没有重新实现 DXF 解析器或引入替代几何内核。
- FreeCAD 的 `Base::Exception` 不是 `std::exception` 子类;适配显式捕获后才能返回真实诊断和执行回滚,不能仅捕获 std 异常并把数字异常地址作为业务原因。
OpenSCAD 用例检查单/多图层、全部图层、不同轮廓的面积 15/32/42、带孔轮廓面积 91、同文档追加、独立文档、缺失文件/图层与错误恢复。结果来自真实 C++/OCCT 面,非固定计数。Points 用例比较 native 存储坐标、包围盒、对象数量和命名文档归属。
## 耗时与验证
| 步骤 | 秒 |
|---|---:|
| Points Facade 编译 | 0.5337 |
| Points WASM 加载 | 0.2907 |
| Points 合并/结构化/创建/批次场景 | 0.2892 |
| Points 有效证据复用 | 0.051 |
| OpenSCAD 最初完整通过组 | 3.888 |
| OpenSCAD 发布后完整通过组 | 3.907 |
| OpenSCAD 有效证据复用 | 0.050 |
本轮原生构建只针对 OpenSCAD/Points 和实际依赖变更,OCCT 库没有重编译。CMake 再生成同时触发了已有翻译资源目标的更新;不把这部分算成新业务实现。诊断阶段经历了多次增量链接和失败,耗时不等于上表最终通过用例的时间;历史失败保留,不能用最终秒级测试宣称整个处理过程只有几秒。
类型检查通过;Points Facade 与模块路由 8 项回归通过;调度、上下文、证据复用等 59 项 Python 回归通过;几何边界检查仍通过。
## 续接边界
09:42 总量快照为 79/1503。本轮明确新闭合六项,另有后台同期成果;所有计数取当前指纹有效的业务结果,不按源码存在或回执刷新计算。
本次没有宣称全部 Points UI、点云拟合、固定样例 FCStd 持久化、所有 OpenSCAD 命令或任意非平面 DXF 已完成。文档持有几何对象,返回的 resourcesReleased 表示临时导入和编辑资源清理,documentRetained 明确表示文档仍存活。
为避免同目标多进程修改/编译,修复期间暂停自动领取并保留源码、日志和未完成状态;验证后恢复原 watchdog。继续使用 v3 的恢复/开发轮转,先处理其余真实业务缺口,不重复重做已验证的入口。