是否可以使用 Autodesk.AEC.LevelsExtension 显示多个级别?

问题描述

加载 Autodesk.AEC.LevelsExtension 后,我们可以选择一个楼层:

levelsExt.floorSelector.selectFloor(1,true)

我的问题是,有没有办法选择多个楼层?比如1楼和3楼,还是分机一次只能选1层。

为了完整起见,扩展加载了: levelsExt = await viewer.loadExtension('Autodesk.AEC.LevelsExtension') 并且查看器是指 Autodesk Forge 查看器。

解决方法

扩展每次只允许一层,因为它使用剖切面来“选择”对象。如果您想显示 2 个相邻的楼层,我认为可以通过将示例屋顶 1 的切割平面之一移动到屋顶 2,将底层 1 保持在原处 - 因此您将拥有 1 层和 2 层。但是它不可能获得 1 层和 5 层,除非您编写自己的扩展程序来进行多个剖切面选择。下面是做2个相邻楼层选择的例子。

// Select floor 2
const CutPlaneSetName = 'Autodesk.AEC.FloorSelector';
let floorIndex = 2;
floorExtension.floorSelector.selectFloor(floorIndex);

// Capture roof floor 2 
const cuts2 = myviewer.impl.getCutPlaneSet(CutPlaneSetName);

// Select floor 1
floorIndex = 1;
floorExtension.floorSelector.selectFloor(floorIndex);

// Capture roof floor 1 
const cuts1 = myviewer.impl.getCutPlaneSet(CutPlaneSetName);

// Restore roof floor 2
const planes = [ cuts1[0],cuts2[1] ];
myviewer.impl.setCutPlaneSet(CutPlaneSetName,planes);