4.2 KiB
PartDesign 当前文档交付
2026-09-09。已接通四项桌面业务:Body、NewSketch、Pad、Pocket,并确认新增的 PartDesign:partdesign.document 文档业务。原有创建/重算和保存重开两项保留,共七项正式通过。新增文档记录使完整清单由 1503 增至 1504,没有缩小范围。
复用与实现
- 复用已有
FreeCADWebPartDesignRuntimeProbe,其原本已链接 PartDesign、Sketcher、Part 和 OCCT。只增加PartDesignDocumentWorkflow.cpp文档适配和对应 Facade/Worker 接线,没有新增几何内核、合并独立 WASM 或重编译 OCCT。 - 原生 Body 持有草图和特征。矩形使用几何/尺寸约束,圆形使用圆心/半径约束,真实 Sketcher 解算均为 0 自由度。参数编辑驱动原生
PartDesign::Pad/Pocket重算,保留 Profile、Base 和 Tip。 /partdesign.html已从旧 fixture 页面改为 React 工作区:多文档、多 Body、模型树、约束尺寸、位置、长度、反向、显示选择、撤销重做、删除、用户 FCStd 文件打开及 OPFS 保存重开。Three.js 仅显示 native OCCT 网格,使用 CAD 的 Z 向上视图。- 用真实 FCStd 字节打开此前 AdditiveBox 路径生成的模型,确认已有实体保留并出现在模型树。旧移植成果没有被新页面排除。
- 错误输入、跨 Body Profile、被引用对象删除均验证文档及事务历史不变;保存重开后继续修改尺寸/深度,几何和原生依赖仍正确。
解阻与耗时
旧命令适配在临时文档里执行一次性几何,无法保持草图驱动关系。本轮直接调用已链接的原生特征类,复用上一轮修好的布尔入口;不通过临时 shape.extrude/cut 冒充持久的 Pad/Pocket 特征。
首次发布版复验暴露参数表选择切换竞态:原生体积和文件正确,输入框短暂显示旧宽度。改为绘制前同步选中对象参数,保留失败报告,最终复验通过,没有因此重建 WASM。
产物发布还增加暂存 WASM 的真实 WebAssembly.validate 及复制前后源文件一致性检查。源文件仍在链接或二进制不完整时拒绝替换旧产物;78,383,410 字节的当前 PartDesign WASM 校验为 true,耗时 0.086 秒。这仍不是整组 JS/WASM/data 的跨文件原子事务。
| 实测步骤 | 秒 |
|---|---|
| 原生工作流源文件编译 | 8.550 |
| PartDesign dispatcher 编译 | 11.077 |
| 增量链接,最后一次记录 | 27.289 |
| 新业务组共享 WASM 加载 | 0.373 |
| 新业务组原生流程 | 2.892 |
| 新业务组浏览器流程 | 15.041 |
| 七项正式验收总计 | 20.689 |
| 七项相同证据复用 | 0.057 |
| 21 项接口、路由、几何边界及发布检查 | 0.777 |
共享组的 timing 不按报告条数重复相加,编译步骤可能并行。逐次 native 调用记录在证据的 nativeTiming。上述程序耗时不是整轮开发耗时:接口文件创建于 11:38:35,工作区文件创建于 11:47:31,用例文件创建于 11:52:14,最终包含旧模型兼容的验收于 12:25:03 完成。这些时间点之间包含阅读、设计、编辑、复核和多轮确认,不能归为纯编译时间。后续应直接扩展本轮的文档接口和工作区,避免再逐命令重建临时样例或页面。
证据与边界
- 当前七项正式报告:
business-evidence/9810111be7d7179ccc9cb5b1-20260909T042503416765.json。 - 参数表竞态失败报告保留:
business-evidence/9dcd461eb6e987fd933bdbe3-20260909T040200293907.json。 - 桌面/手机截图:
partdesign-profile-browser/pocket-{1440,390}.png;画布像素非空、旋转交互及无水平溢出检查通过。 - TypeScript、几何边界检查和增量前端发布构建通过。后台因领取同组业务曾短暂停住父进程,之后已恢复;不需要用户再次启动。
- 后台更改导致 BIM 三项、Sandbox 一项既有结果指纹失效后,仅复验这四项,分别耗时 2.520、1.399 秒,通过记录留在账本,不算新功能。
尚未覆盖任意草图交互、曲线全类型、面附着、全部挤出模式及全部旧桌面命令入口;独立 WASM 间没有共享原生指针。下一步沿同一原生文档结构扩展剩余 Sketcher/PartDesign 业务,复用这些结果,不重做 DXF、基本实体或已完成布尔。