52 lines
4.5 KiB
Markdown
52 lines
4.5 KiB
Markdown
# 当前文档布尔建模交付与解阻
|
||
|
||
2026-09-09 11:24。本轮新增主工作区并集、差集、交集三项业务,复用现有 DocumentProbe、Part 原生特征和已提供 OCCT 库,未重编译 OCCT。当前有效验收 93/1503,剩余 1410;开始时为 87,净增 6 包含后台业务,不能全部归为本次布尔交付。
|
||
|
||
## 实际交付
|
||
|
||
- `part.document/setBoolean` 创建或编辑原生 `Part::Fuse/Cut/Common`,保留 Base/Tool 链接。移动、修改源对象由 FreeCAD 重算;材料标识随源对象继承并通过 FCStd 重开确认。
|
||
- React 主工作区提供布尔模式、操作数选择/交换、创建/更新、XYZ 平移、原生撤销重做。Three.js 只显示 OCCT 网格;生成结果时隐藏操作数,删除或撤销结果后恢复显示。
|
||
- 复用 FCStd/OPFS 保存路径。刷新浏览器、重开文件、修改操作数后仍能重算。无效对象、自引用、间接循环、删除被引用对象、原生重算失败均检查原文档不变。
|
||
- 不相交的 Common 返回空结果并清除旧显示网格,移动后可恢复。1440x1000、390x844 的截图、像素和旋转交互检查通过。
|
||
|
||
## 已修复
|
||
|
||
1. 共用 `FCBRepAlgoAPI_BooleanOperation::Build` 在同步 WASM Worker 内强制并行,首个并集不返回。WASM 分支改为 OCCT 串行,桌面行为不变。
|
||
2. `FeaturePartBoolean.cpp` 原来未编译 `-fexceptions`,局部 catch 未生效。沿用 AttachExtension 的按源文件配置,并保留原生阶段和文档对象错误描述。
|
||
3. 现有 Web `Part::Feature` 默认空材质,`copyMaterial` 却仍查桌面默认材质目录,几何完成后失败。Web 空材质现在继承源对象原生材质,非空材质保留;桌面分支不变。
|
||
4. 产物复制曾暴露半个 WASM,实际出现 `Code section extends past end`。新增同目录唯一临时文件复制及原子 rename;失败保留旧文件并清理临时文件。这是单文件原子发布,不是整组 JS/WASM/data 的跨文件事务。
|
||
|
||
本轮不是一次构建完成:通用错误、编译端禁用 catch 和同步调用无法响应 TERM 导致多次诊断与重链接。后续先检查实际编译选项,再加阶段诊断;同步 WASM 复现命令使用 `timeout -k 3s`,不能只发 TERM 后空等。临时诊断进程均已结束,后台调度未暂停。
|
||
|
||
## 实测耗时
|
||
|
||
以下是测得步骤,不冒充整轮耗时。编译/链接为当前 `.ninja_log` 最后有效记录,业务耗时来自实际报告。
|
||
|
||
| 步骤 | 秒 |
|
||
|---|---:|
|
||
| 布尔包装器编译 | 2.452 |
|
||
| Boolean 特征编译 | 3.844 |
|
||
| PartFeature 编译 | 8.180 |
|
||
| DocumentProbe 编译 | 7.072 |
|
||
| DocumentProbe 最后一次链接 | 25.809 |
|
||
| public 产物同步 | 1.248 |
|
||
| 前端发布构建,包含 public 同步 | 8.740 |
|
||
| Part 新旧 18 项正式确认 | 60.450 |
|
||
| Web 工作区 10 项正式确认 | 18.194 |
|
||
| 共用分发器变化后 17 模块、59 项旧成功结果复验 | 68.614 |
|
||
| 相同三项布尔证据复用 | 0.059 |
|
||
|
||
正式 Common/Cut/Fuse 首次调用分别为 0.428/0.323/0.399 秒;完整原生组为 2.869/2.628/2.974 秒,浏览器组为 6.275/8.541/7.817 秒。共享 WASM 加载 0.322 秒只发生一次,不能把每组展示的该值相加。逐次成功/失败、动作及耗时在证据 `nativeTiming` 中。
|
||
|
||
## 证据与续接
|
||
|
||
- Part 18 项发布版报告:`business-evidence/eb1b2752c41ee3d6720af21a-20260909T031523846110.json`。
|
||
- 后台修改共用分发器后,三项布尔当前报告:`business-evidence/40f7e81b0f093ac994f19abe-20260909T031740283356.json`;Part 五项刷新:`business-evidence/92b4c4e6273198569ab553ea-20260909T032209137983.json`。历史报告保留,当前有效性由账本和指纹判定。
|
||
- Web 10 项报告:`business-evidence/815a9219e10b1a8b04f5db32-20260909T031508329442.json`。
|
||
- Facade、路由、几何边界、原子发布 21 个检查通过;TypeScript、几何边界审计和发布构建通过。
|
||
- 截图:`part-booleans-browser/{Fuse,Cut,Common}-{1440,390}.png`。入口 `http://localhost:5180/`,发布预览 `http://localhost:5181/`。
|
||
|
||
共用分发器的一次修改使很多模块旧证据失效。本轮直接批量执行已有用例恢复,没有改写历史通过标记,59 项复验不算新功能。共享入口修改应集中,稳定后直接执行已有成功组,不重新安排实现模型回合;模块适配尽量留在模块所有者文件,减少不必要的共用文件变更。
|
||
|
||
继续既定 Sketcher/PartDesign 当前用户文档主线。本次交付不等于全部布尔对话框、完整旋转 Placement、所有工作台路由或全项目唯一 WASM 实例已完成。
|