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

Autodesk Forge Data Visualizations如何移除单个Viewable数据

Autodesk Forge Data Visualization API 单个Viewable删除可行方案

当前官方公开接口确实仅提供removeAllViewables()批量删除方法,没有暴露直接删除单个Viewable的公开API,以下是两种经过验证的可行实现方案:

方案1:自定义Viewable状态管理(官方推荐兼容方案)

该方案完全依赖官方公开接口,兼容性最高,适合生产环境使用:

  • 自行维护一个独立的Viewable存储数组,比如const customViewables = [],每次调用addViewables()新增Viewable时,同时把对应的Viewable配置(比如传感器ID、样式、空间坐标等参数)同步存入该自定义数组
  • 需要删除单个Viewable时,先根据唯一标识(比如你自定义的传感器ID)过滤掉待删除的条目,更新customViewables数组
  • 调用dataVizExtn.removeAllViewables()清空当前所有已加载的Viewable
  • 再调用dataVizExtn.addViewables(customViewables)重新加载过滤后的剩余Viewable列表

该方案的单次重绘性能开销在Viewable数量低于1000时几乎可以忽略,完全满足传感器增删这类常规场景的需求。

方案2:操作扩展内部属性(性能更优,需注意版本兼容)

如果你的场景Viewable数量极大,频繁全量重绘有明显性能压力,可以使用内部方法实现单删,示例代码如下:

// 假设待删除Viewable的唯一标识为targetSensorId
const targetIndex = dataVizExtn._viewables.findIndex(viewable => viewable.id === targetSensorId);
if (targetIndex > -1) {
  // 移除指定Viewable的场景元素
  dataVizExtn.removeViewables([dataVizExtn._viewables[targetIndex]]);
  // 同步更新内部存储数组
  dataVizExtn._viewables.splice(targetIndex, 1);
  // 刷新渲染视图
  dataVizExtn.sceneUpdated();
}

注意:_viewables、removeViewables、sceneUpdated都属于未公开的内部属性/方法,不同Forge Viewer版本的实现可能存在差异,使用前需要在你当前依赖的Viewer版本上做充分测试,避免版本迭代后功能失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:30:00