You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js开发Forge BIM360/Fusion模型查看器多模型叠加功能求助

Autodesk Forge Viewer多专业模型叠加实现方案

代码放置位置

根据你当前的项目结构,所有Viewer相关的前端逻辑都在wwwroot/js/ForgeViewer.js文件中,你只需要修改该文件的模型加载逻辑即可。

核心实现代码

你需要将原教程中单模型加载的逻辑调整为多模型依次加载,核心需要开启keepCurrentModels参数保证新加载的模型不会覆盖已有模型,示例代码如下:

// 调整原Viewer初始化函数
function initViewer(urn, token) {
  const options = {
    env: 'AutodeskProduction',
    accessToken: token
  };
  Autodesk.Viewing.Initializer(options, async function () {
    const viewer = new Autodesk.Viewing.GuiViewer3D(document.getElementById('forgeViewer'));
    viewer.start();
    // 加载第一个建筑专业模型
    await loadSingleModel(viewer, '建筑模型URN', token);
    // 加载结构专业模型
    await loadSingleModel(viewer, '结构模型URN', token);
    // 加载MEP专业模型
    await loadSingleModel(viewer, 'MEP模型URN', token);
  });
}

// 通用单模型加载函数
function loadSingleModel(viewer, urn, token, offset = {x:0, y:0, z:0}) {
  return new Promise((resolve, reject) => {
    Autodesk.Viewing.Document.load(`urn:${urn}`, (doc) => {
      const viewables = doc.getRoot().getDefaultGeometry();
      const loadOptions = {
        keepCurrentModels: true, // 核心参数:保留已加载模型
        preserveView: true,
        // 如模型坐标未对齐,可调整offset参数设置位移
        placementTransform: new THREE.Matrix4().makeTranslation(offset.x, offset.y, offset.z)
      };
      viewer.loadDocumentNode(doc, viewables, loadOptions)
        .then(model => resolve(model))
        .catch(err => reject(err));
    }, err => reject(err));
  });
}

注意事项

  • 所有叠加模型需提前在建模软件中对齐坐标系,否则加载后会出现位置错位,如需调整可修改offset参数配置位移,单位为毫米
  • 你需要确保使用的access token拥有所有待加载模型的访问权限
  • 多模型加载完成后,Viewer内置的选择、测量、剖切等功能默认支持跨模型使用

内容的提问来源于stack exchange,提问作者Prakash P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 12:21:03