feat: add structured multi-transform

This commit is contained in:
2026-08-03 02:38:09 -04:00
parent ac1dbc2aea
commit b09c5aaf34
12 changed files with 311 additions and 29 deletions

View File

@@ -1,6 +1,6 @@
# Web FreeCAD 接续执行状态
更新时间2026-08-03Mirrored whole-shape 里程碑已推送
更新时间2026-08-03MultiTransform whole-shape 里程碑)
## 1. 当前目标
@@ -12,7 +12,7 @@
- 云仓库:`http://154.8.160.151:3000/wangdequan/Web_FreeCAD_Bitbybit.git`
- 最近已推送里程碑:`4aa6ca4 feat: add whole-shape mirrored feature`
- 最近已推送里程碑的完整门禁:`./npmw run verify` 通过
- 当前 Mirrored 里程碑验证:`./npmw run verify` 通过Facade 65/65diff/JSON 校验通过
- 当前 MultiTransform 里程碑验证:`./npmw run verify` 通过Facade 67/67diff/JSON 校验通过
- 生产构建:通过
- 本地开发地址:`http://127.0.0.1:5173/`
- 兼容真值表:`config/compatibility-matrix.json`
@@ -31,6 +31,7 @@
9. TSN generation 写回:重算成功后采集面/边/点签名快照与保守历史;迁移 LinkSub/草图外部几何歧义或删除引用标脏所有者并生成可定位诊断schema v6 保存对象拓扑快照。
10. TopoRef 候选替换事务:属性面板/诊断页从源对象当前同 kind 拓扑候选中原子替换 LinkSub 或外部几何引用,重建 DAG、标脏重算并支持 Undo/Redo。
11. Mirrored whole-shapeFacade 暴露 OCCT 平面法向镜像PartDesign Task 支持 XY/XZ/YZ 原点平面与可选 Fuse重算释放 union 临时副本并写回 Shape/拓扑 generation。
12. MultiTransform whole-shape新增结构化有序 Linear/Polar/Mirrored 步骤属性、Task/属性编辑器、最多 6 步和 100 实例校验;重算按顺序组合全部实例,失败与成功均释放中间 Shape并保留最近有效缓存。
相关提交按新到旧:
@@ -49,7 +50,7 @@
## 4. 已确认限制
- 仓库没有 FreeCAD C++ 源码、Emscripten 工程或 planegcs WASM 产物;`SK-03` 不能标记完成。现有 `typescript-basic` solver 仅用于协议与基础模型验证。
- Pattern 当前复制整个 Shape不是 FreeCAD 局部特征历史。
- Pattern 与 MultiTransform 当前复制整个 Shape不是 FreeCAD 局部特征历史。
- Hole 固定原点/法向,尚无面定位、沉孔、锪孔、螺纹和完整孔标准。
- 拓扑历史来自签名保守回退,不是 OCCT/FreeCAD 原生 Generated/Modified/Deleted 历史。
- Placement 已进入文档属性,并接入 Facade 的对象级 Shape 重算;尚未完整映射到 Body/Tip、Support、AttachmentOffset 或所有特征执行器的 FreeCAD 局部坐标链语义。
@@ -61,7 +62,7 @@
2. 补齐 P3-03 浏览器 OCCT 包围盒/体积黄金测试,并验证 Placement 撤销、保存和恢复的真实 Worker 路径Node/fallback 合同已通过。
3. 为 ambiguous/deleted TopoRef 补 3D 候选高亮,并增加真实 OCCT/SQLite 浏览器回放;候选替换 Facade 事务和属性/诊断 UI 已进入当前里程碑。
4. 在获得 FreeCAD `1.1.1` 源码/构建输入后完成 `SK-03` planegcs WASM POC此前继续补充回放夹具、约束分类和 Sketch 编辑事务。
5. 扩展 PartDesign为 MultiTransform 建立有序变换列表合同,再推进 Loft/Pipe/Groove、Thickness/Draft以及 Mirrored/Pattern/Hole 的局部特征历史与完整语义。
5. 扩展 PartDesign推进 Loft/Pipe/Groove、Thickness/Draft以及 Mirrored/MultiTransform/Pattern/Hole 的局部特征历史与完整语义。
6. 完成 FCStd 原生对象/属性/Shape 双向映射和 STEP/IGES/STL/Web CAD 包导入导出。
7. 按核心优先级完成 TechDraw、Spreadsheet、Draft、Assembly、BIM、Mesh、Surface、FEM、CAM 等工作台。
8. 最后通过跨浏览器、性能、内存、安全、可访问性、离线/PWA、升级回滚和发布差异报告门禁。
@@ -134,6 +135,13 @@ Placement 里程碑涉及实现、测试、兼容矩阵和三份状态/方案文
- 当前是整 Shape 镜像,不是 FreeCAD 对选中特征历史的镜像;平面固定经过文档原点,未接 DatumPlane/Sketch axis/TopoRef 支持,也未证明单实体规则。
- 完整 `./npmw run verify`、diff/JSON 校验通过;里程碑已由 `4aa6ca4` 推送。
下一执行点:为 MultiTransform 定义结构化有序步骤属性(而不是解析自由字符串),至少覆盖 Linear/Polar/Mirrored 组合、步骤级校验、Task 编辑、持久化、失败资源回收和 generation 拓扑写回。完成这一合同前,`multi-transform` 继续保持显式 unsupported。
## 12. 2026-08-03 MultiTransform whole-shape 快照
- `App::PropertyMultiTransform` 保存最多 6 个有序步骤;每个步骤使用稳定 ID 和 Linear/Polar/Mirrored 判别联合不解析自由字符串。Facade 写入边界校验枚举、数值、唯一 ID 和笛卡尔组合后的 100 实例上限。
- Task 面板与 Data 属性面板共用步骤编辑器,可添加、删除、切换类型并编辑 Count/Length/Direction、Count/Angle/Axis 或 Plane提交绑定 Base、更新 Body.Tip并进入 Undo/Redo、自动保存和深拷贝持久化。
- 重算从 Base whole Shape 开始,每一步作用于前一步的全部实例,最终 union成功或中途失败都释放镜像/平移/旋转副本,失败不覆盖上一次成功缓存。接受的 generation 继续走统一拓扑采集和写回。
- 合同测试覆盖 Mirrored→Linear 的 6 实例组合、参数映射、完整临时句柄回收、故障注入、最近有效缓存保留、100 实例拒绝、任务提交、深拷贝、Undo/Redo 和 fallback 持久化。
当前实现不是 FreeCAD Transform feature history 的完全等价实现:它组合并融合整个 Base Shape未实现局部特征列表、Datum/TopoRef 轴面、单实体过滤或 OCCT 原生历史。下一执行点是 Additive/Subtractive Loft 的结构化截面合同与 whole-shape experimental 执行边界。
本里程碑不得声称 P3-03、F3 或完整 FreeCAD 兼容已经通过。当前对象 Placement 是 Shape 生成后的对象级变换,尚未证明 FreeCAD 对 Body/Tip、Support、AttachmentOffset 和局部坐标链的完整等价语义。