@file-viewer/geometry-engine

中文文档
3.3.3发布于 2026/10/31Apache-2.0TypeScriptES Module构建来源已验证近 30 天下载 3.6万

Framework-neutral geometry kernel boundary package for STEP, IGES, IFC, 3DM, and BREP preview routes in File Viewer.

原始使用文档

@file-viewer/geometry-engine

English · 简体中文

Flyfish File Viewer 的无 UI、框架无关几何内核包。它已经提供浏览器原生的 STEP / STP、IGES / IGS 和 BREP 解析:文件在本地 OCCT Worker 中完成三角化,不需要上传或服务端转换。IFC 和 Rhino 3DM 目前只提供格式识别与准确的能力提示,尚未接入完整几何渲染。

import { importOcctGeometryFile } from '@file-viewer/geometry-engine'

const result = await importOcctGeometryFile(buffer, 'step', {
  workerUrl: '/viewer-assets/wasm/model/occt-worker.js',
  runtimeUrl: '/viewer-assets/wasm/model/occt-import-js.js',
  wasmUrl: '/viewer-assets/wasm/model/occt-import-js.wasm',
  params: {
    linearUnit: 'millimeter',
    linearDeflectionType: 'bounding_box_ratio',
    linearDeflection: 0.001,
    angularDeflection: 0.5,
  },
})

result 包含 OCCT 输出的装配层级、网格、法线、索引和面颜色信息,可继续转换为 Three.js 或其他渲染对象。解析默认在一次性 Worker 中执行,文件字节和网格缓冲区使用 transferable 传递;完成、取消、报错或超时后 Worker 都会释放。timeoutMs 默认是 120 秒。只有 Worker 确实不可用时才建议设置 useWorker: false,因为回退会占用主线程。

离线资产

运行时不访问 CDN。部署时需要把下列文件放到同一套静态资源中:

  • wasm/model/occt-worker.js
  • wasm/model/occt-import-js.js
  • wasm/model/occt-import-js.wasm
  • wasm/model/LICENSE.occt.txt
  • wasm/model/LICENSE.occt-import-js.txt

@file-viewer/vite-plugin、full 包和仓库构建脚本会复制这些资产。直接集成本包时,需要自行托管并传入 workerUrl、runtimeUrl 和 wasmUrl。应用部署在子路径、资源域名或受控网关下时,请传入最终可访问的绝对 URL 或带前缀 URL,不要依赖站点根路径。

严格 CSP 至少应允许资产来源出现在 worker-src、script-src 和用于获取 WASM 的 connect-src 中;部分浏览器还要求 script-src 'wasm-unsafe-eval' 才能编译 WebAssembly。Worker 使用本地 importScripts() 加载 runtime,因此不要只放行 WASM 而漏掉 runtime 脚本。

能力边界

  • inspectGeometryKernelFile() 仍可只读取文件前缀,识别 STEP / IGES / IFC / 3DM / BREP 常见签名。
  • STEP / STP、IGES / IGS 和 BREP 走 occt-import-js / OpenCascade,已经具备完整网格预览路径。
  • IFC 仍需要独立的 web-ifc / That Open 集成;3DM 仍需要 McNeel rhino3dm 集成。当前不会把它们伪装成已支持预览。
  • OCCT 与 occt-import-js 的许可证文件必须随离线资产一起分发。

把重型几何能力留在独立包中,可以让 @file-viewer/core 保持轻量,同时隔离 Worker、WASM、许可证和真实工程样本回归边界。

版本与发布记录

@file-viewer/geometry-engine 共发布 57 个版本,首次发布于 2026/06/23;过去 12 个月发布了 57 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
3.3.3latest2026/10/3114 天前
3.3.12026/10/3015 天前
3.3.02026/10/2718 天前
3.2.22026/10/1827 天前
3.2.12026/10/1530 天前
3.2.02026/10/1530 天前

关于 @file-viewer/geometry-engine 的常见问题

@file-viewer/geometry-engine 是什么?

Framework-neutral geometry kernel boundary package for STEP, IGES, IFC, 3DM, and BREP preview routes in File Viewer.

如何安装 @file-viewer/geometry-engine?

在项目目录运行 npm install @file-viewer/geometry-engine,或使用 pnpm add / yarn add / bun add。

@file-viewer/geometry-engine 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@file-viewer/geometry-engine 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@file-viewer/geometry-engine 可以商用吗?

@file-viewer/geometry-engine 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@file-viewer/geometry-engine 的下载量有多少?

根据 npm 官方下载统计,@file-viewer/geometry-engine 在 2026/10/15 – 2026/11/13 这 30 天内被下载 36,011 次,日均约 1,200 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@file-viewer/geometry-engine 还在维护吗?

最新版本 3.3.3 发布于 2026/10/31(14 天前);至今共发布 57 个版本,其中过去 12 个月发布了 57 个;首次发布于 2026/06/23。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。