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