Files
FreeCADWasmDev/docs/current/provided-source-index.md
wangdequan 72152ef356 Save verified native IFC import and user validation evidence
Real IFC2X3/IFC4 import tested. Full BIM authoring/export remains out of scope; 349-second building import performance remains to optimize.
2026-09-16 04:27:37 +08:00

119 lines
26 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 用户已提供的源码与资料索引
核对日期:2026-09-08。先定点搜索这些本地资料,再决定是否需要外部来源;历史范围要求服从当前“功能模块业务、功能路由”铁律。
用户已明确大部分源码已编译为 WASM,应直接利用。执行首先读取现有模块 manifest 和命令路由,复用已发布产物;下面的源码路径用于出现具体缺口后的定点修复,不是重新编译的任务清单。本次核对 `web/public/modules/manifest.json` 注册 32 个模块,引用的 68 个不同 runtime JS/WASM 文件在 `web/public` 中全部存在;该核对仅证明文件可用,不替代实际业务验收。
| 路径 | 可复用内容 |
| --- | --- |
| `freecad-source/src/Mod`、`freecad-source/src/App` | 当前 FreeCAD 模块业务、Document、属性与持久化原生实现 |
| `freecad-source/src/WebAssembly/FreeCADCoreProbe` | 已完成的 Web 原生适配、构建声明、模块用例 |
| `FreeCADBaseLib/sources/src`、`FreeCADBaseLib/sources/archives` | 当前工程依赖源码与离线压缩包 |
| `freecad-source/build-web`、`web/public/kernel` | 已有增量构建目录、实际发布的模块产物 |
| `docs/p6`、`docs/business-acceptance`、`tools`、`web/src` | 历史有效证据、业务用例、Facade、Worker 和页面接线 |
| `/home/mes123456/docAll/NowDoc/00-文档总索引.zh-CN.md` | 用户提供的业务语义、核心能力、架构、基线、运行时和专项实现资料索引 |
| `/home/mes123456/working/FreeCADBaseLib/sources` | 用户提供的依赖源码与 archives,包含 OCCT、Python、Qt、Boost、Coin 等 |
| `/home/mes123456/working/FreeCADWorking` | 桌面构建、业务文档、零件库及 `aircraft_impeller.FCStd`、生成脚本 |
| `/home/mes123456/working/Web_FreeCAD_Bitbybit` | 已有 Web 参考工程,含 native、fixtures、tests、scripts 和 FCStd/几何浏览器工作流 |
| `/home/mes123456/FreeCAD`、`/home/mes123456/FreeCADDev/working/FreeCAD` | 历史工作目录中的源码片段、适配脚本和业务证据;使用前核对与当前版本差异 |
## IFC 续接更新(2026-09-12)
2026-09-16:真实 IfcOpenShell 源码已补充至 `freecad-source/build-web/ifcopenshell-native/source`,IFC2X3/IFC4 解析和 OCCT 几何静态库位于同级 `build`。新增 `IfcOpenShellImport.cpp`,以 `IfcOpenShellNative.open` 静态绑定现有 Part 宿主,Std_Open 真实建筑导入、显示及 FCStd 保存重开已复测。下文“缺少真实导入绑定”为历史状态。当前只关闭导入链路,不宣称完整 ifcopenshell Python 作者/导出 API 接入。详见 `ifcopenshell-native-build-20260916.md` 和 `user-tests-20260915/IFC-IMPORT-REPAIR-20260916.md`,不要重复寻找或编译已有依赖。
2026-09-15 用户验收续接:原剩余九项已实际执行,8 项通过,FILE-02 中 IFC 失败。真实 IFC 样本可复用 Qt/Assimp 的 `test/models/IFC/AC14-FZK-Haus.ifc`;它不是 IfcOpenShell 运行时。当前 `BimRuntimeProbe.cpp` 的 declaration-only 后端和此前检查结论一致,不重复添加“真实包优先”分支或空注册。最终证据、修复列表及确切续接条件见 `user-tests-20260915/REMAINING-NINE-REPORT.md`。本轮已修复 Std_Open 深链接、WASM 场景网格化等待、文档撤销模式,并验证结构/链接/OBJ/DXF/STL 等真实流程。继续 IFC 时需要真实绑定位置和构建接入,不得用已通过的 OBJ、STEP 或旧版部分 IFC 解析替代。
- 此前预算阻止的四个范围已实际执行不忽略隐藏/被忽略文件的 IfcOpenShell 文件名检索:`/home/mes123456/working/FreeCADWorking`、`/home/mes123456/working/Web_FreeCAD_Bitbybit`、当前 `freecad-source/build-web`、`web/public/kernel`。没有匹配 `*ifcopenshell*` 或 `*IfcOpenShell*` 文件。该结果只限定这些路径和文件名,不代表全机不存在兼容绑定。
- 其它已列出的本地源树可找到 FreeCAD 的 `nativeifc` 业务脚本和 Qt/Assimp 的 IFC 导入实现;它们不等于桌面业务所调用的 IfcOpenShell Python/WASM 绑定,不可据此替换唯一 OCCT 几何出口。
- 真正安装的 IFC 包优先加载逻辑已经存在,继续复用。修复了占位模块误标 `_freecad_import_stub=False`、空 IFC 写入和空对象读取;声明模块现在明确报缺依赖,不会产生伪造导出文件。
- 四条 IFC 命令的注册误判源于检查器遗漏 `nameValue`,不是需要继续调整重复标记。增量构建/同步回执:`bim-ifc-registration-implementation-pipeline.json`;该回执不代表 IFC 业务可运行。后续只继续真实绑定接入、代理及持久化缺口,禁止重复已完成的注册修复。
- 当前不运行自动验收;本节及 `execution-policy.json` 优先于下文历史记录中的测试建议。
## 本次已定位的业务实现
- 2026-09-15 打开文档主链路:`Std_Open` 已连接浏览器多文件选择、OPFS 内容哈希缓存、FCStd 原生恢复和本运行时注册的格式处理器;显示部分恢复/恢复错误,失败不清理已有工作。复用 `WebOpenCommand.h`、`web-open-adapter.ts`、`web-open-task.tsx`,回执 `open-document-pipeline-20260915.json`,范围与耗时见 `open-document-20260915.md`。未加载的跨模块导入器仍明确报错,不以简化几何替代。
- 2026-09-15 门窗管理:`BIM_Windows` 已接通原生分组数据、多选属性/材质编辑和双击定位,读操作不再保存整份 FCStd;回执 `bim-windows-pipeline-20260915.json`,范围与耗时见 `bim-windows-20260915.md`。同时纠正 `Std_Open` 文档注释假锚点(真实源码 `CommandDoc.cpp:82`)和桌面文档命令被排除出交付优先级的问题;Std_Open 仍待实现,不因元数据修正计作完成。
- 2026-09-15 Link 原生变更:`Std_LinkMakeRelative`、`Std_LinkReplace`、`Std_LinkUnlink` 已接入真实 C++ `setLink`、`CopyOnLinkReplace/Paste`、跨文档共享事务及父对象操作面板,并补入 Link Actions 菜单。复用 `WebLinkMutationCommands.h`、`web-link-mutation-task.tsx`;回执 `link-mutations-pipeline-20260915.json`,范围和耗时见 `link-mutations-20260915.md`。Link 导航仍待实现,禁止仅加目录项冒充完成。
- 2026-09-15 原生结构业务:`Std_Part` 与 `Std_VarSet` 已接入 PartBox/DocumentProbe 文档入口;真实 Part 成员分组、变量集动态属性/表达式/事务和操作面板已完成。复用 `WebStructureCommands.h`、`web-structure-task.tsx`;构建回执为 `structure-pipeline-20260915.json`,范围与耗时见 `structure-20260915.md`。不增加几何内核、不把变量存成前端占位数据,未自动验收。
- 2026-09-15 BIM 关系操作:`BIM_Ungroup`、`BIM_Unclone` 已挂载关系操作面板并接入真实文档 helper 分支;复用原生移组/解除克隆事务,修复替换对象后的选择,移组预览不再保存全量 FCStd。详见 `focused-packets-bim-relationships-20260915.md` 和 `bim-relationships-pipeline-20260915.json`。同时修复任务包读取误拒和未实现命令跨源码族混批,禁止重复添加空登记。
- 2026-09-15 文档业务六项:`Std_SaveAs`、`Std_SaveCopy`、`Std_SelectAll`、`Std_Undo` 接回已有 PartBox 原生文档入口,FCStd 内容存入 OPFS,撤销选择补齐 Label;`Std_ToggleFreeze`、`Std_ToggleSkipRecompute` 直接使用 FreeCAD 对象/文档状态 API。复用 `document-actions-20260915.md` 和 `document-actions-pipeline-20260915.json`,六项实现回执已写入,未自动验收;不要重复创建算法或恢复错误的批量协议。
- 2026-09-15 路由与空转纠正:见 `routing-and-stall-repair-20260915.md`。撤销 BIM/Link 无条件登记,修正空 endpoint、BIM 协议及 Link 文档入口;Dock 使用真实 native Worker。`Std_Test1`~`Std_Test6` 在桌面源码中本就是空操作,保留其文档前置条件,禁止反复接到无关测试套件。文件修改不再清零无交付计数。旧“BIM 全部完成”和 Link 三个无原生入口的登记结论不能沿用。
- 新建组 Std_Group(2026-09-14):复用 `CommandStructure.cpp` 的 `App::DocumentObjectGroup`、Tip、allowObject 和事务语义,在 PartBox/DocumentProbe 既有入口内执行;Workbench 与 Project 已挂载根组/活动容器创建面板、真实成员列表和选择。正式回执 `web-group-pipeline.json` 为 1 ready,未自动验收。详见 `web-group-20260914.md`。
- 新建组 Std_Group(2026-09-14):复用 `CommandStructure.cpp` 的 `App::DocumentObjectGroup`、Tip、allowObject 和事务语义,在 PartBox/DocumentProbe 既有入口内执行;Workbench 与 Project 已挂载根组/活动容器创建面板、真实成员列表和选择。Project 复用原生 snapshot、撤销及 FCStd/OPFS 保存链。两个宿主与前端均构建发布,正式回执 `web-group-pipeline.json` 为 1 ready,未自动验收。后续复用 `WebGroupCommand.h`、`web-group-task.tsx`;详见 `web-group-20260914.md`,不混报 Part/VarSet 等其他结构命令完成。
- Web 帮助/网站接线更正(2026-09-14):旧 `browserCommands` 把十四条目录项按同名字段直接判为完成,且没有处理被前置分支拦截的问题,旧结论不可靠。本次移除该判定,八条网站命令经 `web-website-adapter.ts` 首先调用实际 PartBox/DocumentProbe 宿主读取网站偏好,再由 `WebWebsiteTask` 显示匹配响应链接。正式回执 `web-website-owner-pipeline.json` 为 8 ready;两个原生宿主和前端已发布,未自动验证。复用 `web-website-owner-20260914.md`,不恢复旧宽泛 browser catalog。
- Web Preferences/Customize(2026-09-14):复用 `ParamGet` 参数编辑器,把 `Std_DlgPreferences` 和 `Std_DlgCustomize` 接到同一 PartBox/DocumentProbe 原生链,分别限定 Preferences 与 Workbench 根路径;现有 React 参数树、类型编辑、分组、OPFS FCParam 导入导出继续复用。正式回执 `web-parameter-dialogs-pipeline.json` 为 2 ready,详情 `web-parameter-dialogs-20260914.md`。未自动验收。
- Web 参数编辑器(2026-09-14):`Std_DlgParameter` 已接入 PartBox/DocumentProbe 原生宿主,复用 `ParamGet` 的真实读写、分组及 FCParam 导入导出;修复空组 `GetContents() -> None`、FreeCAD 类型名映射、OPFS 写入失败回滚和宿主隔离。正式回执 `web-parameter-editor-pipeline.json` 为 1 ready,前端和原生宿主均完成构建,未自动验收。详见 `web-parameter-editor-20260914.md`;不要恢复旧 `web.standardCommand` 路径。
- Web About/Qt/标注(2026-09-14):复用现有原生实现,修复前置适配分支返回裸结果、挂载界面读取批次结果的错配;`web-owner-standard-adapter.ts` 和 `document-view-routes.json.standardCommands` 统一执行/发现/构建选择。只读 DrawStyle 刷新不再增加事务,标注通过同宿主刷新显示。正式回执 `web-owner-standard-pipeline.json` 为 3 ready,未自动验收。后续不重复添加旧 `web.standardCommand` 别名或 native marker;详见 `web-owner-standard-20260914.md`。
- BIM 图片显示(2026-09-14):修复 `Image::ImagePlane` 创建后没有返回图片显示数据的问题,并用已链接 Qt WASM 的原生 `QImageReader` 替换不存在的 PySide `QImage` 调用。角点/UV 复用 `src/Gui/ViewProviderImagePlane.cpp`,Three.js 只贴图显示;保留原生文档和 FCStd 保存链。BIM、前端构建及正式回执已完成,未自动验证。复用 `BIMImageReader.h`、`bim-image-display.ts` 与 `bim-frame-view.tsx`,详见 `bim-image-display-20260914.md`;勿重新添加图片解码占位。
- BIM Help/Examples(2026-09-13):已有可执行注册表实际调用本机桌面 `BIM_Help().getUrl()` / `BIM_Examples().getUrl()`;生成器现识别这两条 URL 专用接线,不再重复报原生缺失。链接只使用当前匹配响应,删除会串用 Examples URL 的 Help 全局事件状态。旧版三个重复脚本定义已由现有 `BIMSolidCommands.h` 替代,BIM 和前端均构建同步成功。工作包递归收录同目录本地脚本头文件,不增加片段预算。复用 `bim-external-url-pipeline.json`,详情 `bim-executable-url-unblock-20260913.md`。
- BIM Image Plane 增量构建修复(2026-09-13):现有浏览器图片字节、长度、基点接线复用 `Image::ImagePlane` 原生 helper;首次链接的首错是 `std::string` 到 `const char*` 的调用类型错误,已改为 `.c_str()`。BIM WASM 重链、资源同步和前端构建均成功,记录见 `bim-image-plane-build-repair-20260913.md`。其它 BIM 命令仍按真实业务范围处理,不以登记标记代替实现。
- 依赖图导出收口(2026-09-13):复用桌面 `CommandDoc.cpp` 的 `Document::exportGraphviz` 和已存在 `NativeDocumentView.h`,修复 Facade 错将 Graphviz 文本按网格校验的断点、清除重复导出分支;Project 按钮固定 DocumentProbe 和当前原生文档名。两个文档宿主均已增量链接并同步,前端已构建;正式回执 `web-dependency-export-pipeline.json`。不要重复实现图算法或将此记为全局新增路由。详见 `dependency-export-and-search-repair-20260913.md`。
- Web 相机命令(2026-09-13):16 条显示命令接入既有 ImportRenderBridge / OpenScadDesktopView,包括九种标准方向、缩放、适配全部、左右旋转、存储/恢复工作视图。复用 `src/Gui/Camera.cpp` 四元数和 `NavigationStyle.cpp` 缩放定义;Three.js 只操作显示相机和已返回网格的可视范围,没有新增建模算法。`scene-display-commands.json` 驱动现有 browser-ui 路由,视口内有直接入口;不再要求这组命令的原生登记。工作视图为当前挂载宿主内的临时状态,未扩称持久化视图。构建回执 `web-camera-host-pipeline.json`,未运行自动验收。
- Web 四条视图命令错投修复(2026-09-13):不再调用 `web.statefulFamilyBatch`。使用 `part.viewCommand`(PartBox)或 `part.documentViewCommand`(DocumentProbe),在真正持有文档的既有 Worker/WASM 内调用共享 WebViewCommands;原生缺失文档明确报错,不创建样例。项目 View Tools 固定 DocumentProbe,工作台可指定宿主;typed 响应核对身份和几何,旧 stateful 样例入口提前拒绝 Web desktop 请求。四条正式回执已发布,未运行自动验收,其他运行时文档和完整桌面视图一致性仍不混报。详见 `web-document-view-routing-20260913.md`,后续复用新接口,不再补旧字段或重复 native marker。
- Test 运输层解阻(2026-09-12):MDITest1/2/3 与 TestConsoleOutput 原有 TestRequest→test.inspectRegistry→test.worker.ts 和实际宿主/原生实现已接通发现器。新增的共享 JSON 路由表被真实 dispatcher 和发现器共同读取;已修复目标 pthread 链接/五线程池及初始化函数前置声明,完成四条构建回执。禁止继续添加重复 native markers;不曾运行测试命令或验收。Web 四条命令仍存在错投 stateful 样例运行时的问题,不得照搬放行。源码结论和耗时见 `transport-layer-unattended-repair-20260912.md`。
- Project 原生 Slice 属性编辑(2026-09-12):在现有 DocumentProbe 增加 `setSliceProperties`,复用 `PartSliceDocument` 更新逻辑,由项目页外层事务覆盖重算和显示网格返回。项目树中真实 FeatureSlice 对象现可直接编辑 Base/Tools/Mode/Tolerance/Label,沿用现有 undo/redo、保存和重开,不再必须传副本回工作台。其它模块文档归属仍独立;未运行自动验收。详情 `project-native-slice-edit-20260912.md`,不要重复实现已有属性更新与几何算法。
- Project/Workbench FCStd 副本交接(2026-09-12):DocumentProbe 已打包并加载与 PartBox 相同的 BOPTools/CompoundTools,项目页对象树保留原生 dependencies、Tools。工作台可将 FCStd 副本写入已有共享 OPFS 文档目录并交给项目页,项目页也可将当前快照送回工作台 Slice 属性编辑器;深链接等待命令路由就绪。旧 OPFS/Part 文件仍可读取,不跨 WASM 传裸句柄,不宣称单一全局活动文档。详见 `project-workbench-fcstd-handoff-20260912.md`;仅构建发布,未运行自动验收。
- Part Slice 文档生命周期(2026-09-12):现已增加同 PartBox 运行时的 read/update/reopen,复用原生 Mode/Tolerance/Base/Tools/Label、事务、FCStd 读取与 Python 代理恢复。支持本地文件及 OPFS 重开、属性更新和共享工作台文档导航;简单拆分过滤器随碎片数量同步,外部依赖阻止危险删除。其他 Worker 与独立 project-shell 文档树尚未统一,不宣称全模块完成。后续复用 `part-slice-lifecycle-handoff-20260912.md`,不要重复实现下文旧记录列出的已接通生命周期功能。未运行自动验收。
- Part 参数化切片续接(2026-09-12):在已有 BREP 路径上增加 `resultScope=native-document`,直接调用 `SplitFeatures.makeSlice` 和 `CompoundTools.Explode.explodeCompound`,创建保留的 Base/Tools、Slice、CompoundFilter 与 FCStd 快照;复用现有 PartBox/OCCT,不重新实现算法。前端已增加参数化文档选项及 OPFS 下载。全局文档树、属性编辑与重开仍单独保留,未运行验收;详见 `part-slice-document-handoff-20260912.md`,不要再按下文旧记录把文档创建关联列为未实现。
- Part 切片(2026-09-12):已复用前批 `PartSplitSource` 与 PartBox WASM,接通桌面 `BOPTools.SplitAPI.slice` 的实际 OCCT GeneralFuse 调用,移除实体底件限制及仅提取实体碎片的简化逻辑。BREP 文件输入、模式/容差、结果与碎片的 OPFS 下载已挂载;不重写几何算法,不重编未变的 OCCT。参数化 Slice 的 Base/Tools 和 SliceApart 的 CompoundFilter 特征树仍单独保留,不计入本批完成;详见 `part-slice-placeholder-removal-20260912.md`。未运行自动验收。
- Mesh 规则图元(2026-09-12):`FeatureMeshSolid.cpp` 与 `DlgRegularSolidImp.cpp` 已提供 Cube、Cylinder、Cone、Sphere、Ellipsoid、Torus 六种参数化 Mesh 对象。现已直接复用其类型和属性,替换 `Mesh_BuildRegularSolid` 的三段数量/手拼长方体占位;支持预览清理、真实文档对象创建与 FCStd 快照。前端复用上一批的网格显示和 OPFS 保存,创建后更新同运行时选择。不要重写图元网格化算法,详情与耗时见 `mesh-primitive-placeholder-removal-20260912.md`;未运行用户验收,跨 Worker 文档及全局撤销接入仍单独保留。
- Mesh 组件操作(2026-09-12):已复用 `MeshObject::getComponents`、`meshFromSegment`、`deleteFacets`,替换移除/拆分组件的数量回显占位,并删除 10 段旧分支。真实几何输入返回实际网格;同运行时文档输入使用事务修改或创建 Mesh::Feature。组件参数界面、源网格指纹保护、Three.js 结果显示和 OPFS 索引网格 JSON 下载已接入;不要重写连通组件算法。完整桌面区域选取与跨 Worker 文档传递另行保留,未运行用户验收。详见 `mesh-components-placeholder-removal-20260912.md`。
- MeshPart 展开(2026-09-12):`src/Mod/MeshPart/App/MeshFlattening.cpp`、`MeshFlatteningLscmRelax.cpp`、`MeshFlatteningNurbs.cpp` 已提供真实 C++ `FaceUnwrapper`。现已直接链接到已有 `FreeCADWebMeshPartRuntimeProbe`,复用 Eigen/OCCT;不再要求通过缺失的可选 NumPy/pybind11 扩展才能使用这两个命令。已替换 `CreateFlatMesh/CreateFlatFace` 中“创建长方体并计数”的伪实现,返回真实展开 BREP、显示网格及同运行时文档结果;前端复用已有 Three.js 视图,实际 BREP 经 OPFS 保存。不要重新搜索或重写展开算法;边界和构建回执见 `meshpart-flat-placeholder-removal-20260912.md`。未运行用户验收,闭合网格自动切缝和跨 Worker 文档传递不在本批完成范围。
- Points:复用后台已完成的命名文档/对象原生改动,`points-facade.ts` 已去掉固定三点限制并严格校验实际返回;创建更新、合并、结构化和错误恢复四项通过。当前坐标和包围盒来自 `PointsRuntimeProbe.cpp` 的原生 PointKernel,不由前端制造。
- OpenSCAD DXF:`OpenSCADRuntimeProbe.cpp` 已直接复用 `Import::ImpExpDxfRead` 与 `Part::FaceMakerBullseye`/OCCT,支持层筛选、孔洞、追加与失败恢复。旧 Python `OpenSCAD2Dgeom.importDXFface` 不再是 Web 入口的依赖;保留桌面源码,不重新寻找旧 DXF Python 库。已编译 Import/Part/OCCT 库优先复用,仅增量更新该适配与必要图层选项。结果见 `docs/current/points-openscad-delivery.md`。
- OCCT WASM 已提供:现有 `web/public/kernel/FreeCADWebKernel.{js,wasm}` 均存在,WASM 为 15206151 字节;`web/src/kernel.worker.ts` 调用 `fc_web_step_load` 与 `fc_web_mesh_*`,实现位于 `freecad-source/src/WebAssembly/FreeCADWebBridge.cpp`,复用 OCCT STEP、BRep 与网格化。后续几何请求必须按铁律统一到已提供的 OCCT 内核出口;其它 FreeCAD 模块的已有原生桥接继续核对实际调用,不因有静态依赖就宣称全项目入口已经统一。本条不是重新编译清单。
- Draft SVG:`freecad-source/src/Mod/Draft/importSVG.py`,现有 `tools/draft-business-cases.mjs` 已覆盖实际几何导入、追加、导出及重新导入的周长一致性。
- DXF C++ 实现:`freecad-source/src/Mod/Import/App/dxf/ImpExpDxf.cpp`、`ImpExpDxf.h`、`dxf.cpp`、`dxf.h` 已提供 `ImpExpDxfRead` / `ImpExpDxfWrite` 等读写能力。直接复用已编译的 WASM。`AppImportPy.cpp` 的 `Import.readDXF` / `Import.writeDXFObject` 及 Draft 入口是调用层,不是缺少 C++ 实现;无需下载旧 Python DXF 解析库或重新移植算法。
- Draft 原生依赖缺口已修复:`DraftRuntimeProbe.cpp` 已补齐 Mesh、Import 的本地链接和 Python 注册链;`FreeCADApp`、`Import` 的 Web 编译启用异常捕获,保留原始属性转换与事务恢复语义;本地 `Import/DxfPlate` 模板已打包到原生导出器实际读取的资源目录。
- Draft 业务证据:`docs/current/business-evidence/bcbed2d1047785af9fd2fd80-20260908T030238142050.json`,覆盖 SVG 导入/导出、DXF 导入/导出、不同输入、重新导入几何一致性与错误恢复。新增验收三个明确的格式业务 ID,原有 formatBatch 一并复验;未扩大为整个 Draft 模块通过。
- Part 保存:已改为 `part-save.worker.ts` 共享当前 `DocumentProbe` 文档,支持原生多对象 FCStd 与 React/OPFS 保存、重载、重开。旧的固定 `/tmp/WebBox.FCStd` 限制不再描述当前实现;历史通过及剩余边界见 `docs/current/part-mesh-business-unblock.md`,是否可复用以当前指纹为准,不重做已完成保存链。
- TechDraw:当前绘图、桌面任务、保存均由 `techdraw-python.worker.ts` 共享现有原生文档;已修复路由回退到导入导出 Worker 的错投与 `cancelled` 状态缺失。正式三项组通过,详情见 `docs/current/techdraw-route-unblock.md`;无需为这次前端接线重新编译 OCCT 或 FreeCAD WASM。
- Part 形状格式:`web/src/part-io-facade.ts` 已通过统一 native dispatcher 调用,应从 `PartBoxProbe.cpp` 的实际导入导出实现补齐当前文档输入,再确认对应业务。
未在本次检查的本地目录发现 `dxfReader.py`、`dxfLibrary.py`、`dxfColorMap.py`、`dxfImportObjects.py`;这只表示旧 Python 解析依赖未找到,不表示 FreeCAD 缺少 DXF 实现。
## BIM IFC 恢复检查点(2026-09-09)
- 当前失败业务:`business-format:BIM:export:.ifc`、`business-format:BIM:import:.ifc`。已有合同 `docs/business-acceptance/BIM.json` 和 `tools/bim-recovery-business-cases.mjs` 覆盖这两个 ID;用户提供的实际执行诊断在导出及失败恢复时均报告加载了 source-inspection 声明模块。这是运行后端缺口,不能按编译错误或缺少 coveredIds 处理。
- 已读取 `freecad-source/src/WebAssembly/FreeCADCoreProbe/BimRuntimeProbe.cpp` 的初始化及 `bim.formatWorkflow`:初始化先用 `importlib.util.find_spec('ifcopenshell')` 探测;能发现实际包时会清除声明模块并导入实际包。因此当前代码已具备优先加载真实包的分支,不能再以添加相同分支作为修复。IFC 业务保护在文档创建前检查 stub 和 `file`/`open`;实际调用保留 `importers.exportIFC.export(doc.Objects,path)` 与 `importers.importIFC.insert(path,doc.Name)`。
- 已列出项目内 `FreeCADBaseLib/sources/src` 和 `FreeCADBaseLib/sources/archives` 的直接条目,未列出 IfcOpenShell 源码目录或压缩包。已确认 `/home/mes123456/working/FreeCADBaseLib/sources` 含 `src`、`archives`、`SHA256SUMS`,但本轮尚未检查其子目录。这些结果不能推出其它已索引位置不存在后端。
- 对构建声明、Web 包声明和用户资料总索引的后续定点检索收到 `SCHEDULER_SOURCE_BUDGET_REACHED`,没有返回检索内容;不能记为无匹配。续接从这些尚未完成的定点检查继续,复用上面的初始化和分发源码结论,不重复扫描已经列出的项目内依赖目录。
- 尚需定位可复用的 IfcOpenShell 实现与 WASM/Python 绑定、核对 BIM 目标的链接及打包接入,再由外层增量构建并执行已有两个 IFC 业务用例。本轮未修改 native 逻辑,未执行构建或验收,未关闭失败,也未声明 IFC 业务通过。
### 后续定点检查(2026-09-09)
- 已成功列出 `/home/mes123456/working/FreeCADBaseLib/sources/src` 和 `archives` 的直接条目,没有 IfcOpenShell 条目;这不代表其它位置不存在后端。
- 对 `freecad-source/src/WebAssembly/FreeCADCoreProbe/CMakeLists.txt`、`web/package.json` 和用户资料总索引检索 `ifcopenshell|ifc.*wasm`,有效执行且零匹配。
- 对 `/home/mes123456/working/FreeCADWorking`、`/home/mes123456/working/Web_FreeCAD_Bitbybit`、`freecad-source/build-web`、`web/public/kernel` 的 IFC 文件名检索,以及 `docs/current`、`docs/p6` 的 IFC 后端记录检索,均被 `SCHEDULER_SOURCE_BUDGET_REACHED` 拦截,尚无结果;续接应从这些位置继续,不重复上述已完成检查。
- 当前读到的 IFC 分支已无 stub 检查,并包含未经证实的“构建提供 IFC bridge”注释。本轮恢复 `_freecad_import_stub` 拒绝并移除该注释,在文档创建或修改前明确拒绝声明模块。此保护不提供缺失后端,不解决 IFC 导入导出失败。未运行构建或业务验收,未关闭任何失败;已有两个 IFC 用例继续由外层执行。