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

Autodesk Forge Viewer按dbId放置自定义标记不显示及居中问题

问题原因及解决方案

标记全部居中显示和使用的模型无直接关联,是坐标获取逻辑异常/扩展加载时机错误导致的,具体排查方向如下:

  • 扩展加载时机错误
    标记逻辑需要先获取指定dbId对应构件的几何包围盒,才能计算出正确的标记点位。若loadExtension执行时机过早,模型未完成几何加载,调用接口获取构件包围盒只会返回默认原点坐标,所有标记自然会堆叠在场景中心。
    需要将扩展加载逻辑移到onDocumentLoadSuccess回调中,且监听GEOMETRY_LOADED_EVENT事件,等模型几何完全加载后再加载扩展,参考代码如下:
function onDocumentLoadSuccess(doc) {
  const defaultViewable = doc.getRoot().getDefaultGeometry();
  viewer.loadDocumentNode(doc, defaultViewable).then(() => {
    // 等待几何加载完成后再加载标记扩展
    viewer.addEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT, async () => {
      await viewer.loadExtension('IconMarkupExtension', {
        button: {
            icon: 'fa-thermometer-half',
            tooltip: 'Show The Temperature'
        },
        icons: [
          { dbId: 69, label: '300°C', css: 'temperatureHigh fas fa-thermometer-full'},
          { dbId: 70, label: '300°C', css: 'temperatureHigh fas fa-thermometer-full'},
          { dbId: 71, label: '300°C', css: 'temperatureHigh fas fa-thermometer-full'}
        ],
        onClick: (id) => {
          console.log(' ======================= IconMarkupExtension onClick id: ' + id);
            viewer.select(id);
            viewer.utilities.fitToView();
            switch (id){
                case 69:
                    alert('Sensor offline');
            }
        }
      })
    })
  })
}
  • 原教程逻辑默认适配3D模型
    如果使用的是2D图纸,原教程内的3D坐标转屏幕坐标逻辑需要做适配。可以在IconMarkupExtension.js的坐标计算部分打印每个dbId对应的包围盒值,确认是否返回了正确的坐标范围,如果所有dbId的包围盒中心都是同一个值,即可确认是加载时机问题。
  • dbId有效性排查
    可通过Viewer自带的接口或属性面板核对配置的dbId是否对应模型中实际存在的构件,排除无效dbId导致的坐标获取失败问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:48:03