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
相关产品推荐
相关产品推荐

