Real IFC2X3/IFC4 import tested. Full BIM authoring/export remains out of scope; 349-second building import performance remains to optimize.
119 lines
26 KiB
Markdown
119 lines
26 KiB
Markdown
# 用户已提供的源码与资料索引
|
||
|
||
核对日期: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 用例继续由外层执行。
|