Autodesk forge 加载多个模型时在forge viewer中获取选定图元属性

Autodesk forge 加载多个模型时在forge viewer中获取选定图元属性,autodesk-forge,Autodesk Forge,我有一个加载了8个模型的查看器应用程序 我有一个插件在寻找“聚合\u选择\u更改\u事件”事件 this.viewer.addEventListener(Autodesk.Viewing.AGGREGATE_SELECTION_CHANGED_EVENT, this.onSelectionBinded); 我需要能够访问选定的元素属性 this.viewer.getProperties(_dbId, (result) => { }) 但它表明,观众只看到最后加载的模型,而不是所有模型。

我有一个加载了8个模型的查看器应用程序

我有一个插件在寻找
“聚合\u选择\u更改\u事件”
事件

this.viewer.addEventListener(Autodesk.Viewing.AGGREGATE_SELECTION_CHANGED_EVENT, this.onSelectionBinded);
我需要能够访问选定的元素属性

this.viewer.getProperties(_dbId, (result) => { })
但它表明,观众只看到最后加载的模型,而不是所有模型。
我必须
加载/切换到其他型号吗?如果是这样的话,

根据我的经验,
viewer.model
总是指向第一个加载的模型。如果要访问其他加载的模型,可以通过调用
viewer.impl.modelQueue().getModels()
来获取它们。然后,以以下方式调用查看器属性API:

var allModels = viewer.impl.modelQueue().getModels();
var model = allModels[1];
model.getProperties( dbId, onSuccessCallback, onErrorCallback );
此外,您可以在
onselectionbind
回调的函数参数
event
中获取模型实例。因此,您的
onSelectionBind
可以根据上述逻辑修改为:

this.onSelectionBinded = function( event ) {
    var selSet = event.selections;
    var firstSel = selSet[0];

    var model = firstSel.model;
    var dbIds = firstSel.dbIdArray;
    var firstDbId = dbIds[0];

    model.getProperties( firstDbId, onSuccessCallback, onErrorCallback );
}

希望有帮助

我知道现在有点晚了

获取多模型属性的另一种方法是使用聚合方法

var DBids = viewer.impl.selector.getAggregateSelection(); 
我有一篇博客文章和一个示例网站,详细介绍了以下内容: