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

如何正确修改Autodesk Viewer中selectionMode的选择模式设置

正确修改Autodesk Viewer IFC模型选择模式的方法及模式差异说明

一、正确的编程修改方式

别用ProfileSettings改selectionMode,这个参数不在Profile的管控范畴内,直接用Viewer原生API viewer.setSelectionMode()就行,但要注意得在IFC模型加载完成后执行,不然会被模型初始化覆盖:

// 监听模型几何加载完成事件
viewer.addEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT, () => {
  // 设置为Leaf Object(值0)
  viewer.setSelectionMode(0);
  // 要是想设成Last Object就用值2
  // viewer.setSelectionMode(2);
});

如果想在Viewer初始化时就指定,也可以直接在初始化配置里加:

const viewer = new Autodesk.Viewing.GuiViewer3D(container, {
  selectionMode: 0 // 直接指定初始选择模式
});

二、解决手动设置后重启失效的问题

手动改配置面板的选择模式后重启偶尔失效,是因为IFC模型加载时,IFC扩展会重置部分交互设置。解决办法就是在模型加载完成后,用代码强制覆盖设置,就是上面写的监听GEOMETRY_LOADED_EVENT的逻辑。

三、Leaf Object与Last Object模式的差异

  • Leaf Object(值0):只选模型层级里最末端的叶子节点,比如IFC里的单个墙体、门窗、管线段,不会选中父级构件(比如包含多个墙体的建筑单元)。
  • Last Object(值2):选鼠标点击位置最后渲染的对象,也就是视觉上最顶层的构件。如果有重叠构件(比如墙体上的装饰板),会选中挡在最前面的那个,不管它是不是叶子节点。

对比First Object(值1):会选中层级里第一个命中的父级构件,比如点墙体时会选中整个建筑单元,而不是单个墙体。

四、替换临时DOM操作方案

你之前用定时器操作DOM的方案依赖UI结构,容易出问题,换成官方API的写法更稳定:

// 监听IFC扩展加载完成事件
viewer.addEventListener(Autodesk.Viewing.EXTENSION_LOADED_EVENT, (event) => {
  if (event.extensionId === 'Autodesk.IFC') {
    viewer.setSelectionMode(0);
  }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 11:17:25