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

4.1 KiB
Raw Blame History

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 的恢复/开发轮转,先处理其余真实业务缺口,不重复重做已验证的入口。