APS Viewer中BoxSelection扩展无法选中被遮挡/内部节点的咨询
APS Viewer框选包含被遮挡/内部节点的解决方案
默认的BoxSelection扩展仅会选中视觉可见的节点,被遮挡或嵌套在其他组件内部的节点会被自动过滤。要实现选框范围内所有节点(含被遮挡项)的多选,可通过以下两种方案实现:
1. 重写BoxSelection扩展的选择逻辑
你可以直接修改BoxSelection扩展的核心判断逻辑,跳过可见性检查:
- 获取扩展实例后,重载其
_getIntersectingDbIds方法 - 移除原有逻辑中对节点可见性的校验,直接返回所有与选框边界相交的节点ID
代码示例:
const boxSelExt = viewer.getExtension('Autodesk.BoxSelection'); const originalGetIds = boxSelExt._getIntersectingDbIds; boxSelExt._getIntersectingDbIds = function(bounds) { const allIntersectingIds = originalGetIds.call(this, bounds); // 移除可见性过滤,返回所有相交节点 return allIntersectingIds.filter(dbId => true); };
2. 自定义独立的框选工具
若不想改动原有扩展,可自行实现一套框选逻辑:
- 监听鼠标事件(按下、拖动、释放)绘制选框
- 遍历模型所有节点,通过
viewer.model.getBoundingBox(dbId)获取节点包围盒,判断是否与选框区域相交 - 收集所有符合条件的DBID,调用
viewer.select(dbIds)完成批量选中
这种方式完全由你控制选择规则,不受默认扩展的可见性限制。
官方文档未提及相关配置项,因为默认BoxSelection是基于视觉交互设计的(仅选可见元素),特殊场景需要自定义扩展或修改现有逻辑。
内容的提问来源于stack exchange,提问作者arkkuba
相关产品推荐
相关产品推荐

