用途:把 IFC 文件(IFC4/IFC4X3)转换为浏览器中可交互的 BIM 模型查看器,方向为 IFC→网页单向渲染与检查,不支持在浏览器端写回 IFC。需标准 BIM 功能(导航、选择、剖切、属性查看)时用 @thatopen/components;已有 Three.js 应用无法接入时可自建 web-ifc + Three.js 管线;文件超 200MB 应先在服务端预转换为 Fragments 缓存。
主要能力:通过 web-ifc WASM 解析 IFC,经 @thatopen/components 转为 Fragments 后由 Three.js 渲染,自动处理坐标系转换、几何三角化与实体到网格映射。核心组件含 IfcLoader(IFC 转 Fragments)、FragmentsManager(模型生命周期与缓存)、Hider(按 ID 或类别隐藏/隔离)、Highlighter(射线拾取、按 EXPRESS ID 选中)、Clipper(剖切平面)。属性可通过 getPropertySets、getSpatialStructure 获取;web-ifc 的属性值包在 { value } 中,需取 .value。
用法要点:安装 npm install @thatopen/components @thatopen/components-front @thatopen/fragments three web-ifc;Three.js 版本必须与 @thatopen/components 锁定版本一致(用 npm ls three 校验单一版本)。web-ifc 需在 Init() 之前调用 SetWasmPath。大模型用 StreamAllMeshes 而非 LoadAllGeometry,并在释放模型时调用 CloseModel。为防共面 z-fighting 应给 Fragment 材质加 polygonOffset。
限制:WASM 内存约 2GB 上限,浏览器标签页约 2–4GB;首次解析慢,应缓存 Fragments(Flatbuffers 格式,比源 IFC 小 5–10 倍);web-ifc 输出已是 Y-up,不可再手动旋转 -90 度;坐标是否置原点影响真实坐标保留。技能自带 references 中的方法、示例与反模式文档,以及 web-ifc、@thatopen/components、Three.js 官方链接。