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

.NET Core项目中Forge Viewer无法显示Revit房间问题求助

Forge Viewer 显示Revit房间元素解决方案

现有实现代码

你当前已在.NET Core的模型转换接口中开启了GenerateMasterViews参数,相关后端转换代码如下:

[Route("api/forge/modelderivative/jobs")]
public async Task<dynamic> TranslateObject([FromBody]TranslateObjectModel objModel)
{
    dynamic oauth = await OAuthController.GetInternalAsync();

    // prepare the payload

    var advOutputPayload = new JobSvf2OutputPayloadAdvanced();
    advOutputPayload.GenerateMasterViews = true;

    List<JobPayloadItem> outputs = new List<JobPayloadItem>()
    {
    new JobPayloadItem(
        JobPayloadItem.TypeEnum.Svf2,
        new List<JobPayloadItem.ViewsEnum>()
        {
        JobPayloadItem.ViewsEnum._2d,
        JobPayloadItem.ViewsEnum._3d
        },
        advOutputPayload
        )
    };
    JobPayload job;
    job = new JobPayload(new JobPayloadInput(objModel.objectName), new JobPayloadOutput(outputs));

    // start the translation
    DerivativesApi derivative = new DerivativesApi();
    derivative.Configuration.AccessToken = oauth.access_token;
    dynamic jobPosted = await derivative.TranslateAsync(job);
    return jobPosted;
}

当前前端加载代码如下:

Autodesk.Viewing.Initializer(options, () => {
    viewer = new Autodesk.Viewing.GuiViewer3D(document.getElementById('forgeViewer'));
    viewer.start();
    var documentId = 'urn:' + urn;
    Autodesk.Viewing.Document.load(documentId, onDocumentLoadSuccess, onDocumentLoadFailure);
  });
}

function onDocumentLoadSuccess(doc) {
  var viewables = doc.getRoot().getDefaultGeometry();
  viewer.loadDocumentNode(doc, viewables).then(i => {
    // documented loaded, any action?
  });
}

修复步骤

1. 重新触发模型转换

原有已转换的模型会存在缓存,开启GenerateMasterViews参数后需要重新转换模型,转换时可指定强制刷新参数覆盖原有缓存,确保Master视图正常生成。
注意:Revit原文件中需要保证房间元素有效,存在闭合边界、未被设置为排除房间边界的状态。

2. 修改前端加载逻辑

原有代码使用getDefaultGeometry()获取的是默认3D视图,不会包含房间元素,需要主动筛选生成的Master视图加载,修改后的前端代码如下:

function onDocumentLoadSuccess(doc) {
  // 筛选Master 3D视图
  const viewables = doc.getRoot().search({type:'geometry', role: '3d', name: 'Master View'});
  if (viewables.length === 0) {
    console.error('未找到Master视图,请确认模型转换时已开启GenerateMasterViews参数');
    return;
  }
  viewer.loadDocumentNode(doc, viewables[0]).then(() => {
    // 加载完成后主动开启房间类别可见性
    viewer.search('房间', (ids) => {
      if(ids.length > 0) {
        viewer.show(ids);
        // 可选:调整房间填充透明度和颜色
        viewer.setThemingColor(ids, new THREE.Vector4(0.5, 0.8, 0.5, 0.3));
      }
    }, null, ['Category'])
  });
}

3. 验证效果

重新转换模型并加载后,即可在Viewer中看到房间元素,可通过属性面板直接查看房间的面积、编号等原生Revit属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:45:04